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

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回はFAQブロックがページ内にある時にFAQページとしてのJSON-LD構造化データ用scriptタグを埋め込むかどうかを制御できる
cocoon_json_ld_faq_visible
です。
フックの概要
フック名 | 発火タイミング |
---|---|
cocoon_json_ld_faq_visible | ページ読み込み完了後、フッターが表示された後辺り |
フックの発火条件
このフック自体は特に条件なくページが表示される際に必ず発火します。
ただし、実際にFAQの構造化データ(<script type=”application/ld+json”>)が室力されるかどうかは、ページ内にFAQブロックが存在するかどうかによります。
使いどころ
このフックを使うと、Cocoonが自動で埋め込もうとするFAQ構造化データの出力を抑制することができます。
デフォルトでは true が返るため、ページ内にFAQブロックがあれば構造化データ(FAQPage)の<script>タグが自動挿入されます。
なぜ無効化するのか?
はっきりとは理解できていませんが、以下のようなケースでしょうか。
・自作のJSON-LD出力を別途実装しており、重複を避けたい
・特定のページ種別ではFAQ構造化データを無効化したい
・テスト環境など構造化データを出力させたくない場合がある
ただし、一般的には出力させる方がSEO的にも良いとされているなど、あえて無効化する必要がないケースが多いと思われます。
明確な理由が分かる方は教えていただけると幸いです。
apply_filters呼び出し元のソースコード
functions.php
if (apply_filters('cocoon_json_ld_faq_visible', true)) {
add_action('wp_footer', 'cocoon_footer_faq_script');
}
引数
$is_cocoon_json_ld_faq_visible:(boolean)構造化データの出力有無。true:出力する、false:出力しない
カスタマイズコード例
function customize_cocoon_json_ld_faq_visible( $is_cocoon_json_ld_faq_visible ) {
return false;
}
add_filter( 'cocoon_json_ld_faq_visible', 'customize_cocoon_json_ld_faq_visible' );
上記のようにすることで、全ページでFAQ構造化データの出力が制御されます。
条件分岐を入れて、特定のページだけ制御するような書き方も可能です。
注意点
FAQ構造化データを無効化すると、検索結果にFAQが表示されるリッチリザルトの対象外になる可能性があります。
SEO効果を狙ってFAQブロックを使用している場合は、このフックで無効化しないように注意しましょう。
まとめ
cocoon_json_ld_faq_visible は、Cocoonが自動で出力するFAQ構造化データの出力制御を行えるフィルターフックです。
基本的にはデフォルトの動作(true)で問題ありませんが、独自の構造化データを埋め込む場合や、出力を一時的に止めたい場合などに活用できるかもしれません。
ただし、このフックを不用意に使うと、SEO上のメリットを失うリスクもあるため、使いどころをよく見極める必要がありあそうです。