最初の文字にドロップキャップを追加する必要があるテーマを作成しています。これは、問題の文字を<span class="dropcap>
および</span>
で囲むことによって行われます。 dropcapを作成する実際の作業は、 AdobeのDropcap.js を使用して行われます。
確かにthe_excerpt()
の出力に対してこれを行いたいと思います。さらに、このspanタグを、H3要素の兄弟であるすべてのParagraph要素の最初の文字(h3 + p)に追加したいと思います。
私の好みは、ドキュメントを解析して挿入するJavaScriptまたはjQueryスクリプトを書くのではなく、PHPでこれを行うことです。
これまでのところ、the_excerpt()
を使ってこれをテストしただけで、割り当てられたメモリが枯渇したという致命的なエラーが発生するという全くの失敗でした。しかし、これはコードです:
if ( ! function_exists( 'test_excerpt_dropcap' ) ) :
function test_excerpt_dropcap() {
global $post;
$the_excerpt = get_the_excerpt();
if ( is_singular() && has_excerpt() ) {
$the_excerpt =
preg_replace('/^(.)/', '<span class="dropcap">\1</span>', $the_excerpt);
}
return $the_excerpt;
}
add_filter( 'get_the_excerpt', 'test_excerpt_dropcap' );
endif;
get_the_excerpt()
は抜粋を返しますが、それにget_the_excerpt
フィルタを適用した後でのみ を返します 。あなたのフィルタハンドラが無限の深さまで呼ばれるので、これは無限の再帰を引き起こします。
もちろん、最善の解決策はcssです(@ spacegrrlの答えを参照)が、それを<span>
にしておく理由がある場合は、その抜粋をパラメータとしてハンドラに渡すことができます。 get_the_excerpt()
を呼び出す代わりに、$the_excerpt
パラメータを追加して使用するだけです。