WEBTODESIGN

【Rank Math SEO】投稿のOGP画像をカスタムフィールドの値にする【WordPress】

WordPressのRank Math SEOでのOGPの設定で、投稿のOGP画像が投稿内の最初の画像から変更できずに困ったのでメモ。

フィルターを追加することでOGP画像の細かい操作が可能でした。

フィルターの追加

functions.phpに追記するか、functions.phpと同じ階層にrank-math.phpファイルを追加して記載します。

Rank Math公式は、煩雑さを回避するためにrank-math.phpを作成することを勧めています。

今回私が追記したコードは以下です。

///// 投稿のOGP画像をカスタムフィールドの値にする /////
add_filter( "rank_math/opengraph/facebook/image", function( $attachment_url ) {
    if(is_single()){
        $thum = CFS()->get('thumbnail');
        $attachment_url = $thum;
        return $attachment_url;
    }
});
add_filter( "rank_math/opengraph/twitter/image", function( $attachment_url ) {
    if(is_single()){
        $thum = CFS()->get('thumbnail');
        $attachment_url = $thum;
        return $attachment_url;
    }
});
  • is_single()で投稿ページのみに限定
  • Custom FIeld Suiteで追加したカスタムフィールドをCFS()->get('フィールドname')で取得
  • 取得した内容を返す
  • フィルターがfacebookとtwitterで別々なので、2回記載

という流れです。

rank-math.phpに追記する際は、以下のように<?phpを記載してからコードを入力してください。

<?php
///// 投稿のOGP画像をカスタムフィールドの値にする /////
add_filter( "rank_math/opengraph/facebook/image", function( $attachment_url ) {
    if(is_single()){
        $thum = CFS()->get('thumbnail');
        $attachment_url = $thum;
        return $attachment_url;
    }
});
add_filter( "rank_math/opengraph/twitter/image", function( $attachment_url ) {
    if(is_single()){
        $thum = CFS()->get('thumbnail');
        $attachment_url = $thum;
        return $attachment_url;
    }
});

Advanced Custom Fieldsの場合

Advanced Custom Fieldsの場合はthe_fields('フィールドname')でカスタムフィールドの値が取得できますね。

ソース

Rank Math SEO Filters and Hooks for Developers – Rank Math