4

投稿コンテンツからギャラリー ショートコードを削除し、テンプレートの他の場所で使用するために変数に保存しようとしています。新しいWordpressギャラリーツールは、必要な画像を選択してキャプションを割り当てるのに最適です.これを使用してギャラリーを作成した後、フロントエンドのコンテンツから引き出します.

したがって、この小さな切り取りは、ギャラリーを削除してフォーマットを再適用するのにうまく機能します...しかし、そのギャラリーのショートコードを保存したいと思います。

$content = strip_shortcodes( get_the_content() );
$content = apply_filters('the_content', $content);
echo $content;

ショートコードを保存して配列に解析し、フロントエンドでカスタム ギャラリー セットアップを再作成するために使用できるようにしたいと考えています。保存しようとしているこのショートコードの例は...

[gallery ids="1079,1073,1074,1075,1078"]

どんな提案でも大歓迎です。

4

3 に答える 3

6

投稿コンテンツから First Gallery ショートコードを取得する関数:

// Return first gallery shortcode
function get_shortcode_gallery ( $post = 0 ) {
    if ( $post = get_post($post) ) {
        $post_gallery = get_post_gallery($post, false);
        if ( ! empty($post_gallery) ) {
            $shortcode = "[gallery";
            foreach ( $post_gallery as $att => $val ) {
                if ( $att !== 'src') {
                    if ( $att === 'size') $val = "full";        // Set custom attribute value
                    $shortcode .= " ". $att .'="'. $val .'"';   // Add attribute name and value ( attribute="value")
                }
            }
            $shortcode .= "]";
            return $shortcode;
        }
    }
}

// Example of how to use: 
echo do_shortcode( get_shortcode_gallery() );

投稿コンテンツから最初のギャラリーのショートコードを削除する関数:

// Deletes first gallery shortcode and returns content
function  strip_shortcode_gallery( $content ) {
    preg_match_all( '/'. get_shortcode_regex() .'/s', $content, $matches, PREG_SET_ORDER );
    if ( ! empty( $matches ) ) {
        foreach ( $matches as $shortcode ) {
            if ( 'gallery' === $shortcode[2] ) {
                $pos = strpos( $content, $shortcode[0] );
                if ($pos !== false)
                    return substr_replace( $content, '', $pos, strlen($shortcode[0]) );
            }
        }
    }
    return $content;
}

// Example of how to use:
$content = strip_shortcode_gallery( get_the_content() );                                        // Delete first gallery shortcode from post content
$content = str_replace( ']]>', ']]>', apply_filters( 'the_content', $content ) );            // Apply filter to achieve the same output that the_content() returns
echo $content;
于 2013-10-11T16:17:34.330 に答える