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

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

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

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

PHP

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

Q&A

1回答

1817閲覧

ターム毎に記事の一覧を表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

1クリップ

投稿2018/10/12 08:50

編集2022/01/12 10:55

前提・実現したいこと

全国の店舗一覧を制作しています。

実現したい完成形は
お店のジャンル一覧 > 都道府県一覧 > 都道府県別のショップ一覧 > 詳細(記事)
という流れです。

都道府県別のショップ一覧のところでつまずいています。。

カスタム投稿(post_type:shop)で作成をしており
お店のジャンル(taxonomy:shop_cate)と
都道府県(taxonomy:pref)のカテゴリを付けて
複数のタームで絞り込んで、実現をしようと考えました。

ショップ一覧の完成形のイメージは↓です

東京都の八百屋(お店のジャンルです)一覧 渋谷区 ================ お店1 お店2 お店5 新宿区 ================ お店3 お店6 世田谷区 ================ お店4

市や区は、taxonomy:prefの東京都の子カテゴリーに作っています。
例えば「渋谷区」なら、東京都を親に持つ「渋谷区」というカテゴリーをつけようと考えています。

試したこと

archive-shop.phpにshop_cateの一覧を表示させ

<?php $terms = get_terms('shop_cate'); foreach ( $terms as $term ) { echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>'; } ?>

taxonomy-shop_cate.phpで、それぞれの都道府県を絞り込むパラメーターをつけたリンクを設置し
リンクをクリックすると、下に投稿一覧が表示されるようにしました。

<li><a href="?pref=tokyo">東京都</a></li> <li><a href="?pref=kanagawa">神奈川県</a></li> <li><a href="?pref=chiba">千葉県</a></li> <li><a href="?pref=saitama">埼玉県</a></li>  ・  ・  ・ <?php $url = $_SERVER['REQUEST_URI']; if(strstr($url,'pref=')==true): ?> <h2>○○○県の<?php single_term_title(); ?>の専門店</h2> <?php if(have_posts()): while(have_posts()): the_post(); ?> <ul> <?php if(have_posts()): while(have_posts()): the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; else: ?> <li><?php the_search_query(); ?>に該当する作品はありませんでした。</li> <?php endif; ?> </ul> <?php wp_reset_query(); ?> <?php endif; ?>

これで、ジャンル+都道府県で絞った記事一覧を表示させることはできたのですが
市・区で分けて表示する術がわかりません。。
また○○○県の部分もどう取得してくれば良いのか…

どうかご教授をいただけないでしょうか?
もっと別の良い方法があればそれでも構いません。
何卒よろしくお願いいたします。

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

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

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

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

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

CHERRY

2018/10/12 09:06

市や区は、どのような形でデータを持っているのでしょうか?
退会済みユーザー

退会済みユーザー

2018/10/12 09:20 編集

記事にカテゴリーをつけています。 例えば「渋谷区」なら、東京都を親に持つ「渋谷区」というタームをつけようと思っています。
guest

回答1

0

get_terms関数で指定したタームIDを親に持つタームを取得することができるので、それを利用してください。

以下は、post投稿タイプのcategoryタクソノミーを使用したコード例です。
参考にしてください。

PHP

1// デバッグ用 ここから 2/* ?><pre><?php var_dump($wp_query->query_vars); ?></pre><?php */ 3// デバッグ用 ここまで 4 5// クエリから現在のタクソノミーの名前を取得し、それをタームオブジェクトに変換 6$term_name = get_query_var('category_name'); 7$term_object = get_term_by('name', $term_name, 'category'); 8 9// デバッグ用 ここから 10/* ?><pre><?php var_dump($term_name); ?></pre><?php */ 11/* ?><pre><?php var_dump($term_object); ?></pre><?php */ 12// デバッグ用 ここまで 13 14// タームIDを親に持つ子タームを取得 15$child_terms = get_terms('category', array( 'parent'=>$term_object->term_id )); 16 17echo '<h1>' . $term_name . 'の○○専門店</h1>'; 18 19// 子タームごとに投稿を表示 20foreach($child_terms as $child_term) : 21 22 // デバッグ用 ここから 23 /* ?><pre><?php var_dump($child_term); ?></pre><?php */ 24 // デバッグ用 ここまで 25 26 echo '<h2>' . $child_term->name . '</h2>'; 27 echo '<ul>'; 28 29 // タームIDを指定して投稿を取得 30 $args = array( 31 'post_type' => 'post', 32 'tax_query' => array( 33 array( 34 'taxonomy' => 'category', 35 'field' => 'id', 36 'terms' => $child_term->term_id, 37 ), 38 ), 39 ); 40 $query = new WP_Query( $args ); 41 42 // 取得した投稿を表示する 43 if ( $query->have_posts() ) : 44 while ( $query->have_posts() ) : 45 $query->the_post(); 46 echo '<li>' . get_the_title() . '</li>'; 47 endwhile; 48 wp_reset_postdata(); 49 endif; 50 51 echo '</ul>'; 52 53endforeach;

投稿2018/10/21 08:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問