カスタムフィールドをTOPなど全てのページで取得する - WordPress
はじめに
前提として、カスタムフィールドを登録するのは「Advanced Custom Fields」を使用します。
事前の設定
1. 固定ページを作成
名前などは何でも良いので、固定ページを管理画面上から作成します。
この固定ページはあくまでサイト全体でカスタムフィールドの値を取得するために存在するページです。
2. カスタムフィールドを設定する
「Advanced Custom Fields」の管理画面を開き、位置の「このフィールドグループを表示する条件」の設定を変更します。
「ルールを追加」のボタンをクリックして、先程作った固定ページでカスタムフィールドを使えるようにします。
下記画像の場合、2行目の「ページ」「等しい」「custom-field」を設定することで、固定ページ(ページ名:custom-field)でカスタムフィールドを使えるようにしています。
設定はこれで完了です。
次に、カスタムフィールドの呼び出し方法を説明します。
カスタムフィールドの呼び出し方
第2引数にページIDを渡す
get_field_object('フィールド名')を実行する時に、第2引数にページIDを設定すれば、TOPページなど他のページでもカスタムフィールドを使うことが出来ます。
この仕組を利用して、全てのページでカスタムフィールドを使うことが出来ます。
固定ページのIDを取得する
固定ページのページIDを取得するには、get_page_by_path('固定ページのスラッグ')を使います。
固定ページのURLが/custom-field/ならget_page_by_path('custom-field')のようにして実行すると、固定ページの情報オブジェクトを取得出来ます。
その中にページIDがあります。
なので最終的に、下記のようにすると固定ページのIDを取得出来ます。
$page = get_page_by_path('固定ページのスラッグ');
$id = $page->ID // これが固定ページのページID;
結論
下記コードで、全てのページでカスタムフィールドを使うことが出来ます。
$page = get_page_by_path('固定ページのスラッグ');
$id = $page->ID;
$get_field = get_field_object('フィールド名', $id);
まとめ
get_field_object()の第2引数にページIDを設定すれば、任意のページでカスタムフィールドを呼び出すことが出来ると先程説明しました。
ですが、わざわざ固定ページを作成しなくても、既に存在する投稿のページIDを設定しても同様に任意のページでカスタムフィールドを呼び出すことが出来ます。
しかし、あえて固定ページを作成して…という方法にしたかというと、もし投稿ページのIDを利用した場合、下記のような懸念点があるからです。
- 投稿が削除される可能性がある
- 環境(ローカルや本番)が変わったら投稿IDが変わる可能性がある
もし上記のようなことが起きたらエラーになります。
WordPressでサイト制作を行う場合、上記のように投稿記事の削除や更新、環境の違いなど様々なことを想定して作るようにしましょう。