インデックスページでthe_excerptを使用しています。私は私の各投稿の冒頭にもドロップキャップショートコードを使用しています。インデックスページでは、投稿にドロップキャップのショートコードが付いた文字は表示されません。私の投稿が "Dog"という単語で始まっている場合、インデックスページには "og"と表示されます。 the_excerptを使用する際にショートコードを機能させるにはどうすればいいですか?
ショートコード
function drcap ($atts, $content = null) {
return '<div class="dropcap">' . do_shortcode($content) . '</div>';
}
add_shortcode('dropcap', 'drcap');
これをあなたのテーマのfunctions.phpファイルに貼り付けてください
add_filter( 'the_excerpt', 'shortcode_unautop');
add_filter( 'the_excerpt', 'do_shortcode');
自動生成された抜粋ショートコードでは はWordpressによって削除されます :
自動生成された抜粋からは、すべてのショートコードとタグも削除されます。これは単語境界まで切り捨てられ、デフォルトの長さは55ワードです。
とにかく、あなたがあなたの投稿のために手動の抜粋フィールドを使うならば、それは働きます。
これは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の語長を想定しています。
誰かに役立つことを願っています。
また、完全で包括的な結果を得るために、これら2行をfunctions.php
ファイルに追加してください。
add_filter('get_the_excerpt', 'shortcode_unautop');
add_filter('get_the_excerpt', 'do_shortcode');