cocoonフック調査~exclusion_external_blog_card_urlsの使い方と活用例
 
タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回は外部ブログカード化したくないURLを自由に指定できるフィルターフック
👉exclusion_external_blog_card_urls
です
フックの概要
| フック名 | 発火タイミング | 
|---|---|
| exclusion_external_blog_card_urls | 外部ブログカード描画時 | 
発火条件
外部ブログカード描画時に、無条件に1回発火します。
使いどころ
cocoonでは外部ブログカードの設定を有効にしていると、段落ブロックなどに外部URLを記載すると無条件にブログカード化されます。
しかし、場合によっては「URLはリンクテキストとしてそのまま表示したい」というケースもあるでしょう。
そのようなときに 特定のURLやドメインをブログカード化の対象外にできる のがこのフックです。
apply_filters呼び出し元のソースコード
lib/blogcard-out.php
$exclude_urls = apply_filters('exclusion_external_blog_card_urls', array());引数
$exclude_urls:(array)外部ブログカード化したくないURL(string)の配列
例えば「https://google.com」のように、ドメインまでにしておけば、そのドメインすべてのURLがブログカード化の対象外になります。
カスタマイズコード例
https://google.comが含まれるURLを外部ブログカードの対象外にする場合の例です。
function customize_exclusion_external_blog_card_urls ( $exclude_urls ) {
    $exclude_urls[] = 'https://google.com';
    
    return $exclude_urls;
}
add_filter('exclusion_external_blog_card_urls', 'customize_exclusion_external_blog_card_urls');注意点
・指定方法によっては「部分一致」扱いになるため、ドメイン単位で除外する場合は https://example.com のように指定すると便利です。
・除外リストが増えると管理が煩雑になるため、除外対象を明確にして最小限に抑えることをおすすめします
まとめ
・exclusion_external_blog_card_urls は、外部ブログカード化したくないURLを配列で指定できるフィルターフック
・ドメイン単位で指定すれば、まとめて対象外にできる
・「自動ブログカード化は便利だが、特定のURLは除外したい」という場合に有効