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

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

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

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

PHP

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

Q&A

解決済

2回答

4032閲覧

Wordpress【ターム毎のリストから、ターム一覧のページを作成したい】

rym

総合スコア11

WordPress

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

PHP

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

0グッド

1クリップ

投稿2016/09/12 08:14

編集2016/09/12 23:45

この度はお世話になります。
Wordpressの独学を始めて、3ヶ月あまりの初心者中の初心者です。
現在、自己サイトをWordpressで作成中し、毎日奮闘中です。

カスタム投稿を複数(3つ)作成し、カスタム投稿ごとにタクソノミーと複数のタームをそれぞれ作成しました。
サイドバーにタームのリンクリストを表示させています。
(通常のカテゴリーリストのような表示)
###発生している問題・エラーメッセージ
それぞれのタームリストから、ターム毎に一覧を表示させたいと考えています。

###該当のソースコード

<?php $args=array( 'tax_query' => array( array( 'taxonomy' => 'works_cat', 'field' => 'slug', 'terms' => array( 'web','graphic' ) ), ), 'post_type' => 'works', 'posts_per_page'=> 5 ); ?> <?php query_posts( $args ); ?> <?php if(have_posts()): ?> <?php while(have_posts()):the_post(); ?> <?php get_template_part('content'); ?> //別のテンプレートを呼び出し <?php endwhile; else: ?> ページが存在しない場合の指定 <?php endif; ?> <?php wp_reset_query(); ?>

###試したこと
サイドバーに表示されている、ターム名'web'と'graphic'のリンクリストからは
記述通りの一覧ページが表示されますが、
1つのカスタム投稿(works)を呼び出す記述のみのため、他のタームリストからも同じものが呼び出されてしまいます。

他のタームも同じように、ターム毎の一覧が表示されるよう、ご教示いただけますでしょうか。

説明が解り辛くお手数おかけします。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

kei344

2016/09/12 15:38

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
rym

2016/09/13 00:00

ご連絡いただきありがとうごいます。早速修正いたしました。 初投稿のため、ツールの使用もよくわからず・・・解り辛く申し訳ありませんでした。
guest

回答2

0

ベストアンサー

「ターム毎に一覧」=「タームのアーカイブページ」を表示するのであれば、自分でqueryを書く必要はないと思います。

get_term_link関数などを使って、タームのアーカイブページへのパーマリンクを取得。テンプレートファイルにループ部分を書くだけでいいのではないでしょうか。

PHP

1<?php if(have_posts()): ?> 2<?php while(have_posts()):the_post(); ?> 3 4<?php get_template_part('content'); ?> //別のテンプレートを呼び出し 5 6<?php endwhile; else: ?> 7 8ページが存在しない場合の指定 9 10<?php endif; ?> 11<?php wp_reset_query(); ?>

関数リファレンス/get term link - 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_term_link

投稿2016/09/12 10:33

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

rym

2016/09/12 14:12

mizさま 早速、ご教示いただきありがとうございます! 頂いた回答を元に作成を試み、各タームのリンクリストから、一覧ページを取得することはできましたが、私の説明不足のため再度質問させていただいてもよろしいでしょうか。 >「タームのアーカイブページ」 を表示 おっしゃる通りですが、 カスタム投稿のタクソノミーには複数のタームがあり、 各リンクのタームをクリックすると、そのタクソノミーに属する全てのタームが表示されます。  詳細を申し上げますと、 1. タクソノミー ’works_cat’ には「web」と「graphic」のタームがあり、 2. サイドバーに「web」と「graphic」のタームをリンクができるリスト形式で表示。 3. ターム名「web」をクリックすると、「web」だけの記事のみ取得をさせたいのですが、タクソノミー ’works_cat’に属する「web」と「graphic」の記事の両方が取得されてしまう。 (※ターム名「graphic」をクリックしても、「web」と「graphic」の両方が取得されます。) ■ ターム名「web」のリンクをクリック → 「web」の記事一覧のページへ ■ ターム名「graphic」のリンクをクリック → 「graphic」の記事一覧 ページへ と、考えております。  至らない質問で何度もお手数おかけいたしますが、ご教示いただけますでしょうか。
退会済みユーザー

退会済みユーザー

2016/09/12 22:32

>カスタム投稿のタクソノミーには複数のタームがあり、 >各リンクのタームをクリックすると、そのタクソノミーに属する全てのタームが表示されます。 通常であれば、各タームの記事だけが表示されるはずなんですが…… テンプレートファイルやfunctions.phpにquery_posts()やwp_queryの記述が残っていたりはしませんか?
rym

2016/09/13 01:56

mizさま 再度ご教示いただき、ありがとうございます! mizさまよりいただいたご回答を参考に解決することができました!! >テンプレートファイルやfunctions.phpにquery_posts()やwp_queryの記述が残っていたりはしませんか? おっしゃる通り、タームを呼び出したいテンプレートのファイルにquery_posts()を使用しておりました。  query_posts()の代わりに → get_postsにて対応したところ、各タームの記事だけが表示されるようになりました。 (※コードは見やすさを考慮し、下記の「解決方法欄」に記載させていただきます) 自己解決できずかなりの期間を費やし、ここを解決しなければサイトとしても成り立たないため、本当に助かりました!!ありがとうございます! ただ、なぜquery_posts()の代わりに → get_postsに変更すると、各タームの記事だけが表示されるようになるのか、基本的なことが理解に欠けているため、さらに学習を進めたいと考えております。 phpの基礎知識もないまま、Wordpressに取りかかったため、よく壁にぶつかります。 現在に至るまで 1. ネットの動画によりWordpressの概要を学び、 2. ソシム社より出版の「Wordpressレッスンブック、デザインブック」を片手に、 3. ネット検索にて何とか自己解決 を試みておりましたが、 限界を感じ、今回質問させていただきました。 質問内容を文章に起こすこともとても難しく感じました。 正直なところプログラミングはとても苦手な分野ですが、理解を深めるために前向きに取り組みたいところです。 このような状況ですが・・・ もし、初心者にもお勧めいただける書籍や勉強法などご教示いただけるようでしたら、嬉しいです。 質問が解決いたしましたこと、本当にありがとうございました。
guest

0

■ 質問コード ■

$args=array( 'tax_query' => array( array( 'taxonomy' => 'works_cat', 'field' => 'slug', 'terms' => array( 'web','graphic' ) ), ), 'post_type' => 'works', 'posts_per_page'=> 5 ); ?> <?php query_posts( $args ); ?> //←ここが問題となるコード <?php if(have_posts()): ?> <?php while(have_posts()):the_post(); ?> <?php get_template_part('content'); ?> //別のテンプレートを呼び出し <?php endwhile; else: ?> ページが存在しない場合の指定 <?php endif; ?> <?php wp_reset_query(); ?>

■ 解決コード ■

$args=array( 'tax_query' => array( array( 'taxonomy' => 'works_cat', 'field' => 'slug', 'terms' => array( 'web','graphic' ) ), ), 'post_type' => 'works', 'posts_per_page'=> 5 ); $searched_posts = get_posts( $args ); //←query_posts();の代わりにget_posts();を使用 ?> <?php if(have_posts()): ?> <?php while(have_posts()):the_post(); ?> <?php get_template_part('content'); ?> //別のテンプレートを呼び出し <?php endwhile; else: ?> ページが存在しない場合の指定 <?php endif; ?> <?php wp_reset_query(); ?>

投稿2016/09/13 01:56

rym

総合スコア11

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

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

退会済みユーザー

退会済みユーザー

2016/09/13 04:46

解決したようでよかったです。ただ少々勘違いなされているところがあるようなので、補足しますね。 タームのアーカイブを表示するだけであれば、query_postsもget_postsも必要ありません。アーカイブを表示するためのqueryはWordPressのコア部分(内部)で既に実行されているためです。 したがって、テンプレートファイルには<?php if(have_posts() ): ?>以降さえあれば大丈夫です。 なので、get_postsのくだりはまるまる消してしまってください。 それでも、タームのアーカイブページがきちんと表示されることが確かめられると思います。 get_postsの適切な使い方についてはWordPres Codexなどに目を通してみてください。
rym

2016/09/13 05:07

再三に渡りご教示いただき、ありがとうございます。 >、get_postsのくだりはまるまる消してしまってください。 確認することができました。  今後、基本的な点をより理解を深めるられるよう、取り組みたいと思います。 大変お手数おかけしました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問