web-dev-qa-db-ja.com

the_excerptとショートコード

インデックスページでthe_excerptを使用しています。私は私の各投稿の冒頭にもドロップキャップショートコードを使用しています。インデックスページでは、投稿にドロップキャップのショートコードが付いた文字は表示されません。私の投稿が "Dog"という単語で始まっている場合、インデックスページには "og"と表示されます。 the_excerptを使用する際にショートコードを機能させるにはどうすればいいですか?

ショートコード

    function drcap ($atts, $content = null) {
    return '<div class="dropcap">' . do_shortcode($content) . '</div>';
    }

    add_shortcode('dropcap', 'drcap');
6
Colton Allen

これをあなたのテーマのfunctions.phpファイルに貼り付けてください

add_filter( 'the_excerpt', 'shortcode_unautop');
add_filter( 'the_excerpt', 'do_shortcode');
10
Bainternet

自動生成された抜粋ショートコードでは はWordpressによって削除されます

自動生成された抜粋からは、すべてのショートコードとタグも削除されます。これは単語境界まで切り捨てられ、デフォルトの長さは55ワードです。

とにかく、あなたがあなたの投稿のために手動の抜粋フィールドを使うならば、それは働きます。

2
H6.

これはWordpressの自動生成された抜粋にショートコードの出力を含めるための解決策です。

add_filter('the_excerpt', 'do_shortcode');
remove_filter('get_the_excerpt', 'wp_trim_excerpt', 10);
add_filter('get_the_excerpt', 'my_custom_wp_trim_excerpt', 99, 1);
function my_custom_wp_trim_excerpt($text) {
    if(''==$text) {
        $text= preg_replace('/\s/', ' ', wp_strip_all_tags(get_the_content('')));
        $text= explode(' ', $text, 56);
        array_pop($text);
        $text= implode(' ', $text);
    }
    return $text;
}

この実装は、55の語長を想定しています。

誰かに役立つことを願っています。

1
Programmer Dan

また、完全で包括的な結果を得るために、これら2行をfunctions.phpファイルに追加してください。

add_filter('get_the_excerpt', 'shortcode_unautop');
add_filter('get_the_excerpt', 'do_shortcode');
0
tammy