cocoonフック調査~content_excerpt_beforeとcontent_excerpt_afterの使い方と活用例

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回は記事の抜粋を書き換えられるフィルターフックである
content_excerpt_beforeとcontent_excerpt_after
です。
フックの概要
フック名 | 発火タイミング |
---|---|
content_excerpt_before | 抜粋内容作成元の本文取得時 |
content_excerpt_after | 抜粋内容編集直後 |
フックの発火条件
投稿記事の抜粋を表示する際に、記事に抜粋が設定されていない場合に発火します。
記事に抜粋が設定されている場合は、どちらのフックも発火しません。
使いどころ
cocoonでは、投稿記事に抜粋が設定されていない場合、本文から抜粋を編集しています。
content_excerpt_beforeはその元となる本文を書き換えることができるフックです。
ただし、content_excerpt_afterは編集後の抜粋(つまり最終的に表示される内容)を書き換えらるフックであるため、content_excerpt_beforeで元を書き換える必要性が今一つ理解できません。
apply_filters呼び出し元のソースコード
functions.php
$content = apply_filters( 'content_excerpt_before', $content );
~~ タグの削除など、$contentの編集ロジック ~~
$content = apply_filters( 'content_excerpt_after', $content );
引数
$content:(string)入力となる記事本文
カスタマイズコード例
$content = add_filter( 'content_excerpt_before', customize_input_content' );
function customize_input_content( $content ){
// $contentを書き換える
return $content;
}
$content = add_filter( 'content_excerpt_after', 'customize_output_content' );
function customize_output_content( $content ){
// $contentを書き換える
return $content;
}
注意点
抜粋が手動設定されている投稿では、どちらのフックも発火せず処理が無視されます
before にて本文を編集すると、抜粋の文脈が意図せず変わる可能性があります
まとめ
content_excerpt_before と content_excerpt_after は、Cocoonの自動生成される抜粋に対しどちらの段階でもカスタム処理が可能です。
戦略によっては、2つのフックを併せて使うことで、抜粋元に含める語を取捨選択し、
表示系に「続きを読む」リンクなどを追加する
といった応用ができそうです。
ぜひ目的に応じて活用してみてください。