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

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

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

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

PHP

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

Q&A

解決済

1回答

2279閲覧

タクソノミーの一覧ページ内でのターム別一覧表示について教えてください。

mikkun

総合スコア7

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/01/07 05:37

Wordpressにてページ周りのソースをスマートにしたいのですが、わからないので教えてください。

CPT UIを利用して投稿タイプ「member」とタクソノミー「member_area」を作成しました。
「member_area」内には、北海道(area01)、青森県(area02)、岩手県(area03)・・・など都道府県が登録されています。
そして、各都道府県ページが表示された際には、更に「小売店」「飲食店」「企業」と分けて一覧表示をしたいと考えており、
「小売店」「飲食店」「企業」はadvanced custom fieldsを使い、カスタムフィールドで店舗カテゴリ「member_category」とし、「小売店」はmembercat01、「飲食店」はmembercat02、などとチェックリスト形式にて割り振りました。

結果下記のようなソースを、taxonomy-member_area.php内に入れて表示し、member_area毎にtaxonomy-member_area01.php、taxonomy-member_area02.phpとファイルを47都道府県分作成すれば問題はないのですが、このtaxonomy-member_area01~を作成せずに、taxonomy-member_area.php内でスマートに対処できないか教えてください。

◆taxonomy-member_area.php内には下記のソースを入れてみました。 <section class="archive-member-area"> <dl id="MenberList"> <dt>北海道内の小売店</dt> <dd> <?php $args = array( 'tax_query' => array( array( 'taxonomy' => 'member_area', 'field' => 'slug', 'terms' => array( 'area01' ) ) ), 'order' => 'ASC', 'post_type' => 'member', 'posts_per_page' => -1, 'meta_query' => array(array( 'key' => 'member_category', 'value' => 'membercat01', 'compare' => 'LIKE' )) ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <table> <tbody> <tr> <th>会社名</th> <td><?php echo get_post_meta($post->ID,'member_name',true); ?></td> </tr><tr> <th>所在地</th> <td colspan="3">〒<?php echo get_post_meta($post->ID,'member_zip',true); ?><br><?php echo get_post_meta($post->ID,'member_address',true); ?></td> </tr> </tbody> </table> <?php endwhile; ?> </dd> <dt>北海道内の飲食店</dt> <dd> </dd> <dt>北海道内の企業</dt> <dd> </dd> </dl><!-- --> </section>

ソース内の 'terms' => array( 'area01' ) の 'area01' の部分をページ毎に自動的に変わることが出来れば、恐らく47都道府県分のファイルを作らなくても良いんじゃないかと勝手に思って悪戦苦闘しながらいろいろなページを見て試しているものの、解決の糸口が見えてきません。

同様の流れや、他の方法も含めて教えて頂けないでしょうか?

どうぞ、宜しくお願いしますm( . . )m

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

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

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

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

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

guest

回答1

0

ベストアンサー

get_query_var関数でmember_areaのスラッグを取得できると思います。

PHP

1<?php echo get_query_var( 'member_area', '' ) ?>

参考URL

  • 関数リファレンス/get query var - WordPress Codex 日本語版

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_query_var

###追記

PHP

1$ma = get_query_var( 'member_area', '' ); 2$args = array( 3 'tax_query' => array(array( 4 'taxonomy' => 'member_area', 5 'field' => 'slug', 6 'terms' => $ma 7 )), 8 'order' => 'ASC', 9 'post_type' => 'member', 10 'posts_per_page' => -1, 11 'meta_query' => array(array( 12 'key' => 'member_category', 13 'value' => 'membercat01', 14 'compare' => 'LIKE' 15 )) 16);

###追記2
このようにすれば、47都道府県分のファイルをつくる必要がなくなります。

PHP

1<?php 2$ma_slug = get_query_var( 'member_area', '' ); 3$ma_term_object = get_term_by('slug', $ma_slug, 'member_area'); 4$ma_name = htmlspecialchars($ma_term_object->name); 5 6// デバッグ用出力(消してOK) ここから 7?><pre><?php var_dump($ma_slug); ?></pre><?php 8?><pre><?php var_dump($ma_term_object); ?></pre><?php 9?><pre><?php var_dump($ma_name); ?></pre><?php 10// デバッグ用出力(消してOK) ここまで 11?> 12<section class="archive-member-area"> 13<dl id="MenberList"> 14<dt><?php echo $ma_name; ?>内の小売店</dt> 15<dd> 16<?php 17$args = array( 18 'tax_query' => array( 19 array( 20 'taxonomy' => 'member_area', 21 'field' => 'slug', 22 'terms' => $ma_slug 23 ) 24 ), 25 'order' => 'ASC', 26 'post_type' => 'member', 27 'posts_per_page' => -1, 28 'meta_query' => array(array( 29 'key' => 'member_category', 30 'value' => 'membercat01', 31 'compare' => 'LIKE' 32 )) 33); 34$loop = new WP_Query( $args ); 35while ( $loop->have_posts() ) : $loop->the_post(); 36?> 37<table> 38<tbody> 39<tr> 40<th>会社名</th> 41<td><?php echo get_post_meta($post->ID,'member_name',true); ?></td> 42</tr><tr> 43<th>所在地</th> 44<td colspan="3"><?php echo get_post_meta($post->ID,'member_zip',true); ?><br><?php echo get_post_meta($post->ID,'member_address',true); ?></td> 45</tr> 46</tbody> 47</table> 48<?php endwhile; ?> 49</dd> 50 51<dt><?php echo $ma_name; ?>内の飲食店</dt> 52<dd> 53</dd> 54<dt><?php echo $ma_name; ?>内の企業</dt> 55<dd> 56</dd> 57</dl><!-- --> 58</section>

投稿2017/01/07 10:20

編集2017/01/08 10:12
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mikkun

2017/01/08 05:47

分かりづらい質問にも関わらず、アドバイスを頂きありがとうございます。 教えていただきました通りのタグにてページ毎のタームを表示することは出来ましたが、phpの関数に埋め込み自動化する事は出来ないようですね(汗 他に何かスマートなやり方があればご教授いただけましたら幸いです。
退会済みユーザー

退会済みユーザー

2017/01/08 08:40

$ma = get_query_var( 'member_area', '' ); として、$maをコードに埋め込めばいいと思うのですが、それではダメですか?
mikkun

2017/01/08 09:06 編集

申し訳ありませんm( . . )m 関数に関してよく理解していないのですが、こんな感じでしょうか? <?php $ma = get_query_var( 'member_area', '' ); $args = array( 'tax_query' => array( array( 'taxonomy' => 'member_area', 'field' => 'slug', 'terms' => '$ma' ) ), 'order' => 'ASC', 'post_type' => 'member', 'posts_per_page' => -1, 'meta_query' => array(array( 'key' => 'member_category', 'value' => 'membercat01', 'compare' => 'LIKE' )) ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <?php endwhile; ?> 結果、内容を拾えず表示されませんでした。 面倒なご質問で申し訳ありません。。。m( . . )m
退会済みユーザー

退会済みユーザー

2017/01/08 09:44 編集

回答に追記しました。'$ma'にクオテーションは不要です。PHPの文法を確認してください。
mikkun

2017/01/08 10:32

クオーテーションを取り除き、無事解決できました! 何度もお付き合いいただきありがとうございました! wpを弄り始めまだ日が浅いのですが、少しでも多く知識を習得して今後も頑張りたいと思います! 分かりづらい質問の上、細かなところまでお付き合いいただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問