- web design -

blog

カスタムフィールドの値をトップページなどで表示する

WordPress

こんにちわ、ma-ya’s CREATE[まーやずくりえいと]です。

 

依頼されているサイト制作中です。

制作中にふと、カスタムフィールドを設定してトップページのループ外の場所でフィールドの値を取得したくなりました。

ので、メモも兼ねてここに記しておきます。

ちなみにカスタムフィールドの生成はAdvanced Custom Fieldsで行っていることが前提です。

 

トップページからカスタムフィールド値を呼び出す(ループ外)

ケースとしては、トップページにyoutubeの埋め込み動画を表示させるのをテンプレート直書きではなく、設定箇所を設けて表示させたかったのです。

その方がクライアントもわかりやすいし、テンプレートを直接触らせるリスクも回避できるし一石二鳥なわけです。

大まかな流れとしては下記のような感じで対応しました。

  1. 設定専用の固定ページを作成
  2. カスタムフィールドを新規作成
  3. フロントページのテンプレートから値を出力

て感じ。

 

設定専用の固定ページを作成

管理画面的な使い方をするための固定ページを作成します。

あくまで設定専用なので公開設定は「非公開」に設定するのがポイント。

念のためインデックスされないように出来ればなおベター。

 

カスタムフィールドを新規作成

以下ポイント。

  1. 「ルール」の項目を「ページ」「等しい」「○○(先ほど作った固定ページ)」に設定
  2. フィールドタイプは「テキストエリア」に設定
  3. フォーマットは「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 関数を用いてます。

こんな感じでやるとループ外でも表示されましたとさ。

 

めでたし。