【WordPress】特定のページで入力されたAdvanced custom fieldsの値をショートコードで出力する方法
※当ブログのリンクには一部広告が含まれています。
タイトルが分かりにくいですが、例えばある固定ページで店舗情報をカスタムフィールドで入力して、他のページでもそのカスタムフィールドの値を表示したい時などに使えます。
店舗情報が変更されれば、他のページでも変更されるという仕組みです。固定ページでも投稿ページでも使用可能です。今回はAdvanced custom fields(以下ACF)でカスタムフィールドを作成して出力させます。
WordPressのプラグイン「Advanced custom fields」を使ってカスタムフィールドの値をテンプレートで出力する場合、
通常はthe_field()
やget_field()
といったプラグインのタグを使用することが多いと思いますが、管理画面の投稿ページで出力したい場合は、どうすればよいでしょうか?
管理画面の投稿画面ではphpが実行できないようになっているので、<?php the_field('field_name'); ?>
と記述しても反映されません。「Exec-PHP」のような投稿画面でもphpを使えるようにするためのプラグインが出ていますが、セキュリティー的に不安要素が多いので、できれば使用を避けたいところです。
参考ページ:WordPressに対する改ざん攻撃、「コード実行」狙いも
【この記事を書いた人】
Adobe使用歴20年以上、Webデザイナー歴15年以上、フリーランス歴10年以上のApple/運動好きな2児の母。Apple/クリエイティブ/運動/ライフスタイル関係の情報を発信中。プロフィール詳細
目次
Exec-PHPの代わりにショートコードを使う
上記のようなプラグインを使用せずにphpを実行するには、ショートコードを作成すると便利です。 ショートコードとは、functions.phpに書いたプログラム(関数)を短いコードで呼び出す機能です。
長いプログラムもたった1行で投稿画面からもテンプレートからも呼び出すことができます。もちろん、Advanced custom fieldsのカスタムフィールドの値も呼び出せます!
今回は「ページA」で入力したカスタムフィールド「shop_info」の値を、投稿画面とテンプレートで呼び出します。
予めAdvanced custom fieldsで「shop_info」を設定している前提で話を進めます。
ショートコードの基本的な書き方は、以下のページでも説明しています。
functions.phpにカスタムフィールドを呼び出す関数を書く
functions.phpに以下の文を記述します。作業前には必ずバックアップをとっておきましょう。
function get_shop_info() { $myshop = get_field('shop_info',123); return $myshop; } add_shortcode('show_shop_info', 'get_shop_info');
関数「get_shop_info
」を作成し、「ページA」で入力したカスタムフィールド「shop_info
」の中身を変数「$myshop
」に代入して、returnで表示します。
「123」というのは「ページA」のページIDで、管理画面のURLで調べることができます。
「add_shortcode
」で、ショートコード名「show_shop_info
」と作成した関数「get_shop_info
」を併記してショートコード[show_shop_info]
で呼び出せる状態にします。
投稿画面でカスタムフィールドの値を呼び出す
投稿画面では以下のショートコードを記述します。
[show_shop_info]
テンプレートでカスタムフィールドの値を呼び出す
テンプレートでは以下のように記述します。
<?php echo do_shortcode('[show_shop_info]'); ?>
ACFの関数を使う
投稿画面に書く場合
ACF独自のショートコードも用意されていますが、the_field
で出力できるようなテキストベースのシンプルな値のみ有効のようです。
[acf field="shop_info" post_id="123"]
テンプレートに書く場合
もちろん以下のようにAdvanced custom fieldsの関数を使っても表示されます。この場合は、ショートコード名ではなくてカスタムフィールド名とページIDを記述することをお忘れなく!混乱しないようにルールを決めておくといいですね。
<?php the_field('shop_info',123); ?>
ACFを更に使いやすくするACF Pro
Advanced Custom Fieldsでは、次世代バージョンのACFとACFを更にパワーアップさせた高機能なアドオン(The Repeater Field、The Gallery Field、The Flexible Content Field、Clone field、Options Pages)がパッケージ化された「ACF Pro」という有料プラグインが用意されています。便利な機能が多く搭載されているのでオススメです!
ショートコード関連記事
ACF関連記事