質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

4154閲覧

タームに紐づくターム一覧を表示したい

JG1QOW

総合スコア15

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/07/07 02:14

編集2018/07/18 00:55

前提

プラグイン「Custom Post Type UI」を使用してカスタムタクソノミー「animal」と「area」を作成しました。
さらに、プラグイン「Advanced Custom Fields」を使用して「animal」のタームで使用するカスタムフィールドを作成しました。

タクソノミー「animal」のタームには、
・(名前)キリン (スラッグ)Giraffe
・(名前)ゾウ (スラッグ)elephant
などが入力されています。

タクソノミー「area」のタームには、
・(名前)アフリカ (スラッグ)afirica
・(名前)北米 (スラッグ)north america
などがが入力されています。

「animal」のタームで使用するカスタムフィールドには、以下のフイールドを用意しています。
・(フィールドラベル)生息地域 (フィールド名)area (フィールドタイプ)タクソノミー「area」

ここで、taxonomy-area.phpを作成し、タクソノミー「area」のターム別(地域別)の個別ページを作成しています。
カスタム投稿タイプ「目撃情報」「ニュース」などを作成しており、それぞれの地域には、これらの記事一覧をこのページで表示しています。

実現したいこと

今回、各ターム(地域)に、「生息地域」として、当該「area」に紐づいているタクソノミー「animal」のターム一覧をリンク付きで表示させたいと思っています。表示場所はtaxonomy-area.phpです。

ご教授いただける方がおられましたら、お力添えいただければ幸いです。
宜しくお願いいたします。

試したこと

taxonomy-area.phpで以下を記述してみる
↓「紐づいているタームによる絞り込み」がうまく動作せず(postがある"animal"の一覧が表示される)

php

1<?php $area = get_query_var('term');?> 2 <ul><?php 3$args = array( 4'taxonomy' => 'animal', 5'tax_query' => array( 6 'taxonomy' => 'area', 7 'field' => 'slug', 8 'terms' => $area 9 ), 10'number' => 5 11); 12$the_query = new WP_Term_Query($args); 13foreach($the_query->get_terms() as $term){ 14$term_link = get_term_link($term->slug,'animal'); 15?><li><a href="<?php echo $term_link; ?>"><?php echo $term->name; ?></a></li></ul>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/07/11 08:14

「試したこと」は記事ページでの処理でしょうか。また、カスタムフィールドでなくカスタムタクソノミーをそのまま利用すればよいのでは?
JG1QOW

2018/07/18 00:39

ご質問、ありがとうございます。「試したこと」はtaxonomy-area.phpでの処理です。タームでカスタムフィールドを使用して別のタームを紐づけているのは、管理画面でタームにタームを紐づける手段が他に見当たらなかったからです。 どうぞ、よろしくおねがいしますm(_ _)m
guest

回答2

0

kei344さまのご回答のURLをもとに、以下のように対応し、解決できました
http://webcake.no003.info/webdesign/wp-term-query.html

taxonomy-area.phpに以下を記述

php

1<?php $area = get_queried_object()->term_id ?> 2<?php 3$args = array( 4'taxonomy' => 'animal', 5'hide_empty' => false, 6'meta_query' => array( 7 array( 8 'key' => 'area', 9 'value' => $area 10 ) 11 ), 12'number' => 5 13 14); 15 16$term_query = new WP_Term_Query($args); 17foreach($the_query->get_terms() as $term){ 18$term_link = get_term_link($term->slug,'animal'); 19?><li><a href="<?php echo $term_link; ?>"><?php echo $term->name; ?></a></li></ul>

wp_termmetaテーブルから取得するも、無料版の「Advanced Custom Fields(ACF)」で作成したタームのカスタムフィールドは、通常、wp_termmetaには保存していないので、上記コードをtaxonomy-area.phpに書いただけでは表示されませんでした。

wp_termmetaテーブルを使用する方法はいくつかありますがが、今回、私の場合、ACFを有料版の「ACF PRO」に切り替えることで、対応しました。「ACF PRO」は、有料版に切り替える操作のみで、自動でwp_optionsの内容をwp_termmetaにコピーしてくれます。

https://www.advancedcustomfields.com/blog/acf-pro-5-5-0-update/

よって、今回の課題は、私の場合、
①taxonomy-area.phpに記述
②ACFをPROにアップグレード

の行程を実施し、無事、「タームに紐づくターム一覧を表示する」ことができました。

投稿2018/07/21 20:53

編集2018/07/21 20:55
JG1QOW

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

カスタムフィールドなら 'tax_query' ではなく 'meta_query' では?

【WordPress 4.6.0から追加されたWP_Term_Queryを使う – WebCake】
http://webcake.no003.info/webdesign/wp-term-query.html

投稿2018/07/19 14:34

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

JG1QOW

2018/07/21 20:36

kei344さま 回答いただき誠にありがとうございました。いただいたリンクが大変参考になり、無事、解決できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問