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

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回は内部ブログカードのスニペット(抜粋)を変更できるフィルターフック
👉cocoon_internal_blogcard_snippet
です
フックの概要
フック名 | 発火タイミング |
---|---|
cocoon_internal_blogcard_snippet | 内部ブログカード描画時 |
発火条件
内部ブログカード描画時に、無条件に1回発火します。
使いどころ
内部ブログカードで表示される(抜粋)を変更できます。
例えば以下のような場面で活用できそうです。
・スニペットを一律で定型化する(例:「内容:●●●●」のフォーマットに統一
・検索性・可読性を意識して文字数制限を加える
・スニペット(抜粋)を表示させない(文字数をゼロにする)
下の記事で似た機能であるcocoon_blogcard_snippetを紹介していますが、cocoon_blogcard_snippetは内部ブログカードと外部ブログカードを一括で変換します。
こちらのcocoon_internal_blogcard_snippetは外部ブログカードには影響しません。
apply_filters呼び出し元のソースコード
lib/blogcard-in.php
$snippet = apply_filters( 'cocoon_blogcard_snippet', $snippet );
引数
$snippet:(string)スニペット(抜粋)の内容
カスタマイズコード例
スニペット(抜粋)が50文字以上の場合に50文字で切り出す例です。
function customize_cocoon_blogcard_snippet ( $snippet ) {
if (mb_strlen($snippet) > 50) {
$snippet = mb_substr($snippet, 0, 50).'...';
}
return $snippet;
}
add_filter('cocoon_blogcard_snippet', 'customize_cocoon_blogcard_snippet');
注意点
・このフックは内部のブログカードにのみ処理を適用します。
外部ブログカードも一括に制御したい場合はcocoon_blogcard_snippetを利用しましょう。
・フックで文字列を書き換えるため、意図しない文字化けやフォーマット崩れが起こらないよう、マルチバイト文字を扱う場合は mb_strlen / mb_substr を使うのが安全です。
まとめ
・cocoon_internal_blogcard_snippetは内部ブログカードのスニペット(抜粋)を変更できるフィルターフック。
・文字数制限やフォーマット統一などに活用できる。
・外部用の個別フック、内部・外部同時制御のフックもあるので、ケースに応じて使い分けが必要。