記事の詳細

あるカスタム投稿ページで別のカスタム投稿の記事一覧が取得できて、かつそれがエディタ上で配置を変更できる、そしてその記事一覧が記事ページが属するタクソノミ―と同じタクソノミ―で出力される……という、ちょっとわかりにくいことをしたかったのです。

そもそもどういう仕組みなのかというと、

  1. 投稿コンテンツがA、Bとあり、AにはA2、C1というタクソノミーがあって、BにはB2、C1というタクソノミーがあり、それぞれにタームが付随している。
  2. C1のタクソノミ―はA、Bともに共有である状態。
  3. 投稿コンテンツAのC1内タームの記事ページを表示している際、投稿コンテンツBにあるC1内ターム記事一覧を表示

ということをがやりたかったわけです。
以下のようなフローになります。

  1. カスタム投稿A、Bをつくる
  2. カスタムタクソノミーA2、B2、C1を作る
  3. カスタム投稿AにカスタムタクソノミーA2、C1を適応、カスタム投稿BにカスタムタクソノミーB2、C1を適応
  4. 投稿コンテンツBのタームC1の記事一覧が表示されるサブループを作り、functionにショートコードを設置する
  5. 投稿コンテンツAの記事内にショートコードで呼び出す

 

カスタム投稿に共通のカスタムタクソノミーを適応する

利用したプラグインは「Custom Post Type UI」になります。

Custom Post Type UI

カスタム投稿の設置の仕方は割愛。
「利用するタクソノミー」部分にチェックを入れることで、各カスタム投稿に共通のタクソノミーを設置することができます。

タクソノミ―C1のループ

 

get_the_terms で投稿に紐づく任意のタクソノミーを取得。「カスタム投稿AのタクソノミーをC1を取得したとき、カスタム投稿BのC1の一覧が取得」できるようになります。
これでカスタム投稿Aのシングルページに共通カスタムタクソノミーC1のいずれかのタームが設定されている場合、同タームのチェックが入っているカスタム投稿Bの投稿記事一覧が呼び出されます。(post_typeでカスタム投稿Bを指定しています)

これをテンプレートとしてphpファイルにまとめました。loop_custom.phpとか適当に名前は付けておきます。

 

ショートコードでループを呼び出せるようにする

以下のコードをfunctionに追加します。

 

「loop_custom」のところを指定したphpファイル名に変えます。

 

記事内にショートコードを呼び出す

Gutenbergだとブロックのウィジェット項目に「ショートコード」があります。ここに上記で指定したショートコードを記載します。

ブロック形式だと好きなところに反映できるのでレイアウトが組みやすいですね。

 

特に共通のカテゴリー、タクソノミーでなくていい場合は、ショートコードでループを呼び出すだけ。

上記は共通のタクソノミーを利用して、同じチェックが入っているものを呼び出すためにつくったものですが、単純に別のタームのループを呼び出したいだけなのであれば、以下のように記載します。よく使うサブループですね。

 

tax_queryの使い方がポイント

タクソノミーのパラメータについてはこちら

single.phpなどが属するカテゴリやタクソノミーを呼び出すときに使える関数は以下の通り。

single.phpなどカテゴリやタクソノミー、タームを保有するページで、サブループを使う際、上記の要素を取得するには、サブループの最初でそれらを「取得する」作業が必要になります。

 

このサブループの

最初のこれですね。

「tax_query」の中の「terms」 に「$term->slug」を指定していますが、この$termは表示されるsingle.phpからタームを取得する、=>slug で「スラッグで」という意味になります。

tax_queryの呑み込みが遅くて苦労したゆえ覚書……。
WordPressは奥が深い……。

 

この記事であなたの課題を解決することができましたか?

疑問点があったり、解決できなかったことがありましたら、お気軽にご相談してください。


ほかの投稿も読んでみませんか?

コメントは利用できません。

相模原のお店やサービスをどんどん紹介!

行ってみよう相模原 相模原市のお店限定

飲食店

ページ上部へ戻る