カスタムフィールドの値をトップページなどで表示する
posted : 2018.05.04
こんにちわ、ma-ya’s CREATE[まーやずくりえいと]です。
依頼されているサイト制作中です。
制作中にふと、カスタムフィールドを設定してトップページのループ外の場所でフィールドの値を取得したくなりました。
ので、メモも兼ねてここに記しておきます。
ちなみにカスタムフィールドの生成はAdvanced Custom Fieldsで行っていることが前提です。
トップページからカスタムフィールド値を呼び出す(ループ外)
ケースとしては、トップページにyoutubeの埋め込み動画を表示させるのをテンプレート直書きではなく、設定箇所を設けて表示させたかったのです。
その方がクライアントもわかりやすいし、テンプレートを直接触らせるリスクも回避できるし一石二鳥なわけです。
大まかな流れとしては下記のような感じで対応しました。
- 設定専用の固定ページを作成
- カスタムフィールドを新規作成
- フロントページのテンプレートから値を出力
て感じ。
設定専用の固定ページを作成
管理画面的な使い方をするための固定ページを作成します。
あくまで設定専用なので公開設定は「非公開」に設定するのがポイント。
念のためインデックスされないように出来ればなおベター。
カスタムフィールドを新規作成
以下ポイント。
- 「ルール」の項目を「ページ」「等しい」「○○(先ほど作った固定ページ)」に設定
- フィールドタイプは「テキストエリア」に設定
- フォーマットは「convert HTML into tags」に設定
③はyoutubeのHTMLコードを入力するために設定します。
完了したら、固定ページに出現したカスタムフィールド欄にコードを入力します。
テンプレートから値を出力
<?php echo get_field ('フィールド名',固定ページID));?>
仕上げに出力したいページのテンプレートファイル(の任意の場所)に上記を記述。
出来上がり!
ページIDの調べ方
ページIDを調べる方法は色々ありますが、ページ編集画面を開いた時のURL「~post.php?post=〇〇」の○○がIDです。
サンプル
<div class="youtube"> <?php echo html_entity_decode(get_field('youtube',47));?> </div>
自分の場合はHTMLコードを入力するので念のためPHPの html_entity_decode 関数を用いてます。
こんな感じでやるとループ外でも表示されましたとさ。
めでたし。