WordPress

【WordPress】Advanced Custom Fieldsのタクソノミーを出力したい

wordpress

WordPressでプラグイン「Advanced Custom Fields」を使用した際の、タクソノミーの出力方法についての備忘録です。

やりたいこと:カスタム投稿、タクソノミーの表示

  1. プラグインを使わずに、カスタム投稿タイプ、カスタムタクソノミーを追加。
  2. プラグイン「Advanced Custom Fields」でカスタムフィールドを作成。
  3. 1と2を紐付け、カスタムフィールドから入力→投稿した内容をサイトに表示させる。

つまづいた点:タクソノミーの返り値がタームID

Advanced Custom Fieldsで、フィールドタイプが「テキスト」「数値」「テキストエリア」のものは、ソースに<?php the_field(‘フィールド名’); ?>を追加することで表示されたが、「タクソノミー」については期待した値が表示されなかった(公式サイト通りに記述しても、なぜか上手く表示されず)。

原因:タームIDが取得されていた。

※返り値にタームIDを選択していたため(デフォルト値)、当然といえば当然だったのですが。。。

やったこと:タームオブジェクトから名前を取得

今回やってみた内容について、始めから順に記述していきます。

カスタム投稿タイプ「書籍」の作成

function.phpに下記のソースを追加します。

「書籍カテゴリー」の追加

管理画面にカスタム投稿タイプ「書籍」が追加されたので、書籍>書籍カテゴリーより、新規カテゴリーを追加します。
試しに、「専門書」「小説」「雑誌」の3つを追加してみました。

Advanced Custom Fieldsの設定

1.プラグイン「Advanced Custom Fields」でフィールドグループ「書籍」を作成します。

2.下記のフィールドを追加します。

フィールドラベル フィールド名 フィールドタイプ
著者 b_author テキスト
書籍カテゴリー b_category タクソノミー
価格 b_price 数値
本の概要 b_about テキストエリア

フィールド名「書籍カテゴリー」の設定内容

  • フィールドラベル:書籍カテゴリー
  • フィールド名:書籍カテゴリー
  • フィールドタイプ:タクソノミー
  • フィールド記入のヒント:空白
  • 必須か?:いいえ
  • タクソノミー:book_cat ※作成したカスタム投稿タイプ
  • フィールドタイプ:セレクトボックス
  • 無を許可するか?:いいえ
  • タームの読み込み/保存:チェックあり ※チェックを入れないと、管理画面→書籍→書籍カテゴリーのカウントが更新されない
  • 返り値:タームID ※追記あり(アーカイブページの表示 〜返り値がTerm Objectの場合〜
  • 条件判定:いいえ

カスタム投稿タイプ「書籍」の投稿

管理画面の書籍>新規追加より、新しい記事を投稿します。

  • タイトル:WordPress入門
  • 書籍名:W.Press
  • 価格:3000
  • 本の概要:WordPressの基本的な内容について。
  • 書籍カテゴリー:「専門書」にチェック

アーカイブページの表示 〜返り値がタームIDの場合〜

カスタム投稿タイプ書籍用に、archive-book.phpを作成します。

解説

16行目で、選択したタームのタームIDが取得されるので、変数$term_idに格納します。
17行目で、ターム ID を指定してタームの全データをデータベースから取得し、変数$termに格納します。
18行目で、タームの名前を参照し、出力します。

アーカイブページの表示 〜返り値がTerm Objectの場合〜

追記:こちらの方がよりシンプルで、公式サイトと同様の記述で表示出来ました。

フィールド名「書籍カテゴリー」の設定内容の返り値を下記に設定します(他は変更なし)。

  • 返り値:Term Object

アーカイブページの表示 〜返り値がタームIDの場合〜の14〜20行目を下記に置き換えます。

解説

16行目で、タームオブジェクトが取得されるので、変数$termに格納します。
18行目で、タームの名前を参照し、出力します。

結果:タクソノミーの表示成功

期待通りの値(専門書)が表示されました!

結果

一度理解すると難しい内容ではありませんでしたが、だいぶハマってしまいました。
最初から、返り値をTerm Objectに設定しておくべきでした
以上です。

続き→【WordPress】管理画面のカスタム投稿タイプ投稿一覧のカスタマイズ

POSTED COMMENT

  1. わっきなっつ より:

    子育ての一番大変な時ではないかと思い恐縮ですが、質問です。

    ACFでカスタムタクソノミーを使った場合、カスタムタクソノミーの画面の方で、「カウント」のところに、カウントされなくないですか?
    ここで言うと、「書籍カテゴリー」の管理画面で「専門書」のカウントが増えない、ということです。

    • 管理人 より:

      返信が大変遅くなり申し訳ございません。
      コメントありがとうございます。
      たしかに、カウントが増えておりませんでした。

      管理画面より、
      カスタムフィールド(ACF)→書籍→カテゴリー(編集)→タームの読み込み/保存:チェックあり
      に設定変更したところ、カウントされるようになりました。

      ご指摘ありがとうございました!

管理人 にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)