WordPressカスタムフィールドに入力した内容を全ページに表示させる方法があったのでご紹介。カスタムフィールドはとても便利な機能ですが、全ページ共通部分(ヘッダーとかフッターなど)の表示部分には使用できないと勘違いしておりました。意外と簡単に全ページ共通で表示させる方法があったんですね。
カスタムフィールド の値を全ページで取得する方法
聞けばとても簡単だな、と思うのですが、入力した管理画面のpostIDを追記するだけなのです。
WordPress管理画面を開くと、ブラウザURLには、以下のような記述が見られます。
wp-admin/post.php?post=100&action=edit
赤文字部分(100)がpostIDです。
これを、WordPressデフォルトのカスタムフィールドの場合だと以下のように追記します。
<?php echo post_custom('field-name', 100); ?>
管理画面のどのページで入力したのかを追記するだけで、好きな場所に表示させることができるのです。
WordPressのカスタムフィールドプラグインでもOKです
WordPressプラグインで出力している値も全ページに表示できます。
Advanced Custom Fieldsの値の場合
使用頻度が高いAdvanced Custom Fieldsの値も、どこでも表示させることができます。
<?php the_field('field-name', 100); ?>
Smart Custom Fieldsの繰り返し値の場合
WordPressのカスタムフィールドプラグイン『Smart Custom Fields』には、『Advanced Custom Field』では有料の繰り返し機能が標準装備がついています。これがあることで、カスタムフィールドの入力項目を簡単に増やすことができるのですが、ここで入力した値も、全ページで表示させることができます。
<?php
$group_set = SCF::get( 'field-group-name', 100 );
foreach ( $group_set as $field_name => $field_value ) {
?>
<?php echo esc_html( $field_value['field-name'] ); ?>">
<?php } ?>
カスタムフィールドの値を全ページに表示できるようになると、かなり応用が効く
カスタムフィールドの値って、てっきり入力したページに関連する箇所(ページ)にしか表示されないのだと思ってました。投稿で入力したカスタムフィールドの値は『記事一覧』か『記事ページ(single.php内)』だけといった感じで。
これまでトップページをカスタムフィールドを使って編集できるようにしたいから、固定ページを用意して、トップページの表示切り替えをしていたのです。でも、ブログ記事一覧も表示したいから『WP_Query』を使って表示させて…と。
でもこれを知ってからは、普通に『index.php』にpostID指定のカスタムフィールドで出力すればいいので、余計なテンプレートファイルを用意しなくても済むようになりました。
あと、クライアントサイトでも、ヘッダーやフッターなどの共通項目の編集をクライアント自身でできるようになりますね。営業時間や定休日などの変更だけではなく、ちょっとしたお知らせ文を全ページのフッターに記載する、といった事も今回の方法でできるし。
知っている人からすれば「そんな事かよ。」と思うのでしょうが、私はこれにずっと悩まされていたので、かなりスッとしましたよ。