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')でカスタムフィールドの値が取得できますね。