【WordPress】複数、任意のフィールド取得、記事出力する方法(foreach回し/get_post_custom/記事内出力)

      2473文字

【WordPress】複数、任意のフィールド取得、記事に出力する方法

今回は、WordPressのサイト制作で使う『複数、任意のカスタムフィールドを取得、記事に出力』というのを取り上げます。フィールドに登録されている内容を、記事本文に手打ちするのは、フィールドが多くなってくると大変です。プログラムを使ってサクッと取得できるのが良いと思うので、さっそく方法を見ていってみましょう。

なお、いつものように管理人所有の著作権フリー曲サイトSSFを利用します(既にフィールドがいくつか指定されているからです)。

『the_meta』がダメだった理由→表示に使わないフィールドも全部出る


以前も少し書きましたが、WordPressにはフィールド取得・出力ファンクションが用意されています。『the_meta』というのも、その一つ。『single.php』で使ってみましょうか。これはsingleやループ内で使えます。


こんな感じで、全部出てしまうんですね。リスト形式で出てくるのは便利ですけど、ファイルパスや、カウント数みたいな、表示に使わないフィールドも出ますので、他の方法を考えてみます。

パターン1・get_post_customでまとめて取り、変数格納してecho


『複数、任意のカスタムフィールド』ということでしたが、この画像のように『get_post_meta』を何回も行うのは、フィールドが多いと大変かもしれません。さらに格納部分などもあります。なるべく行数を減らしてみましょう。

コード例と解説

取りたいフィールドは『atmos:雰囲気』『bpm:BPM』『sub_genre:曲のサブジャンル』『inst:メインで使っている楽器』です。まず、『get_post_custom』で一気に取って$multifieldに格納します。あとは$atmos = $multifield[atmos]のようにキー指定。

arrayなので、単純にechoするんじゃなく[0]のように、配列の番号をつけてやります(0が最初の要素。)。$atmos[0] . $atmos[1]のようにすると、複数入っているフィールドが出力できました(このフィールドはひとつのキーで二つの値が入っています。meta idは別です。)。

表示例


『single.php』に記載。
改行とかを入れていないんで見にくいんですけど、複数・任意のフィールドを取ることができました。$atmos[0] . $atmos[1]のあいだの『.』が、文字列連結演算子なので、htmlタグを挟むこともできます(ただし、上記のコードはesc_htmlエスケープ処理しているので、タグがそのまま出ます。ご注意ください)。

パターン2・ get_post_metaをforeachでループ回す

コード例と解説

こちらは『get_post_meta』で一個ずつ取るんだけど、キー(’atmos’ , ‘bpm’ , ‘sub_genre’ , ‘inst’)を配列に入れて、foreachで回します。echoする部分もループ内に入れているので、コードがスマートな感じになります。

表示例


『single.php』に記載。
$atmos[0] . $atmos[1]みたいな指定ができなかったので、キーatmosは『最初の一個』が出力されています。スマートと言えばスマートですが、『キーが一個・値が複数』のときの処理は、今度考えてみたいと思います。

記事の本文で使いたい場合→ショートコードにする

上記の二つの例では『テンプレートsingle.php』に入れていました。状況によっては『最初の見出し前など、記事の内部で使いたい』時があるかもしれません。その場合は『ショートコード』を使用します。


表示テンプレートでなく、functions.phpに記載します。mmというのがショートコードです。そのほかの違いは『echoではなくreturnする』など。基本的にはパターン1と一緒です(タグを使う場合は、1と同様にesc_htmlエスケープ処理しているのでご注意ください)。


記事を書く時、フィールドを表示したい部分にショートコードを記載します。


記事内にフィールドを出力することができました。フィールド内容を補足する形で、本文を書くということもできるようになります。

あとがき・まとめ

  • the_metaではフィールドが全部リストで出るので、任意のものを複数取るときはget_post_custom・get_post_meta
  • foreachで回すと、コードが少なくて済む
  • テンプレートではなく記事の本文で使いたい場合は、ショートコードにする

まとめると、このような感じでしょうか。特に『任意の複数のフィールド・記事本文内』というのは、サイトの傾向によっては使用頻度が高いと思いますので、ぜひご検討ください。


【カテゴリ】 - wpサイト制作事例
【タグ】 - , , ,

  関連記事

【WordPress】プラグイン無し、カンタンページネーション作成・パラメータ指定例も紹介(paginate_links)
【オリジナルWPサイト】スターターテーマ&フレームワーク・Materializeでオリジナルデザイン(レストラン風)
ワードプレスサイト・スマホ対応・SSL事例~『仙台国分町の馬刺し・馬肉料理店 馬いものきふくさま』
【WordPress】複数、任意のフィールド取得、記事出力する方法(foreach回し/get_post_custom/記事内出力)
【WordPressテーマ改造】カスタマイザープレビューが表示されなくなった件の対応(ファンクション名変更・twenty seventeen)
【WordPress】人気記事表示のしかた~PVカウント・フィールド格納&ソート(ログイン者カウントなし)
【WordPressサイト製作】レスポンシブ左右ボックスとaudioで、音楽素材サイトを作る
WordPressのカスタムフィールド値で記事を絞り込み・検索するサイトの作り方・一部始終を徹底解説
【静的HTML→WordPressリニューアル】同じデザインでWPにするときの注意ポイント
WPカスタムフィールドを使って、soundcloudみたいに記事一覧でオーディオ再生できるサイトを作る方法
WordPressサイトに、Microsoft Azureを使って、シングルサインオン機能(パスワードベース・プラグイン無し)を実装してみる
WPログアウト機能『wp-login.php?action=logout』と『wp_logout_url』の違い~後者はwpnonceで一発ログアウト