[wp]別ページのカスタムフィールドをスラッグ名で指定して取得する

Advanced Custom Fieldsの応用。

取得・出力の基本形

「customfield」ってフィールド名で作ってるとする。

//出力する
echo get_field('customfield');

//中身があれば出力する
if(get_field('customfield')):
echo get_field('customfield');
endif;

別ページのカスタムフィールドを取得する

フィールド名のあとにページID(数字のやつ)を加えたらそのページのカスタムフィールドを呼んでこれる。
ページIDが「40」のフィールド名「customfield」を呼び出すとこうなる。

//出力する
echo get_field('customfield',40);

//中身があれば出力する
if(get_field('customfield',40)):
echo get_field('customfield',40);
endif;

ページIDじゃなくてページスラッグで指定する

正直なところページIDは普段使わないんだよね。
スラッグでやりたい。
ページスラッグから直接指定できないっぽいんで、スラッグからIDを引っ張ってきてそれをぶち込むことになる。
ページIDが「40」でページスラッグが「hogehoge」のフィールド名「customfield」を呼び出すとこうなる。

//スラッグからID抽出
$page_id = get_page_by_path('hogehoge');
$page_id = $page_id -> ID; //ここでページIDの「40」が出力される

//出力
echo get_field('customfield',$page_id);

//中身があれば出力する
if(get_field('customfield',$page_id)):
echo get_field('customfield',$page_id);
endif;

まとめというか

トップページを固定ページに指定しない状態(index.php、home.phpとか)で、スライドショーとかフリースペース的なものを付けたいなってときに、ちょいちょい更新かけるだけなのにいちいちftpに上げるのだるいわってなる、そうするとカスタムフィールドを活用したいんだけど、固定ページじゃないからカスタムフィールドを付与できない。
簡易データベース的に使える固定ページを作っておいて、そこから引っ張ることで補完する。
まあそれなら最初から固定ページでやれよって感じなんだけど、後付でそうしなきゃいけなくなってる場合の対処法として。

コメント

タイトルとURLをコピーしました