Advanced Cutstom Fields で フィールドグループを表示するページをスラッグで指定する


Advanced Cutstom Field で表示する場所をスラッグで指定する。

今回は Advanced Custom Fields の PHP でフィールドグループを表示するページを ID ではなく スラッグで指定する方法をご紹介します。

普通にAdvanced Custom Fields の Tools > Generate PHP で PHP 出力すると以下のような location の設定になります。
value の部分がページ ID になります。

'location' => array (
array (
array (
'param' => 'page',
'operator' => '==',
'value' => 24,
),
),
),

get_page_by_path 関数でスラッグ名で指定する。

get_page_by_path 関数はスラッグ名から ページの ID を取得できる関数です。
これを利用してスラッグ名から ID を取得します。

$pagecheck = get_page_by_path('slugname');
$pageid = $pagecheck->ID;

取得した ID を 変数に代入して先程の ページ ID を指定する箇所に記述します。

'location' => array (
array (
array (
'param' => 'page',
'operator' => '==',
'value' => $pageid,
),
),
),

これで表示するページをスラッグで指定できるようになりました。

親ページがある場合の設定方法

親ページがある場合は上記のやり方だとできません。
以下のように親ページのスラッグ名のあとにスラッシュをつけて指定します。

$pagecheck = get_page_by_path('parentslug/slugname');

参考サイト

Set ACF location rules based on slug

 

コメントを残す