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

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

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

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

Q&A

2回答

1856閲覧

WordPress WP_Queryについて

S.T

総合スコア93

WordPress

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

0グッド

0クリップ

投稿2016/09/01 06:44

お世話になります。

search.phpでキーワード・タグ・カテゴリー検索を行ないたいと思っているのですが、
タグとカテゴリー検索がうまく行なえません。※キーワード検索はできます。

PHP

1$args = array( 2 'posts_per_page' => 10, 3 'orderby' => 'date', 4 'order' => 'DESC', 5 'paged' => $paged, 6 'tag_id' => 1 //または 'cat' => 1 7 ); 8$query = new WP_Query( $args ); 9 10if( have_posts() ): 11 while ( $query->have_posts() ) : 12131415 endwhile; 16else: 17181920endif; 21

上記の方法でデータを取得しようとしているのですが、うまく取得できません。
search.phpは元々キーワード検索用だからカテゴリーとタグの検索が行なえないということでしょうか?
それとも、他に原因があるのであれば教えていただければと思いますm(_ _)m

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

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

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

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

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

guest

回答2

0

質問者様の希望する方法とは少し違うかもしれませんが、以下の様な実装ではどうでしょうか。

1. searchform.phpというファイルを作り、以下のコードを記述する。

こちらのサイトの以下のコードを参照してください。
WordPressでカテゴリー&タグを絞り込み検索をする | webOpixel

PHP

1<div id="search"> 2<form method="get" action="<?php bloginfo( 'url' ); ?>"> 3 <p>検索</p> 4 <input name="s" id="s" type="text" /> 5 <?php wp_dropdown_categories('depth=0&orderby=name&hide_empty=1&show_option_all=カテゴリー選択'); ?> 6 <?php $tags = get_tags(); if ( $tags ) : ?> 7 <select name='tag' id='tag'> 8 <option value="" selected="selected">タグ選択</option> 9 <?php foreach ( $tags as $tag ): ?> 10 <option value="<?php echo esc_html( $tag->slug); ?>"><?php echo esc_html( $tag->name ); ?></option> 11 <?php endforeach; ?> 12 </select> 13 <?php endif; ?> 14 <input id="submit" type="submit" value="検索" /> 15</form> 16</div>

2. サイドバーにウィジェットの「検索」を追加する

これで、キーワード&カテゴリ&タグを検索できるフォームができあがるはずです。
検索結果もsearch.phpのテンプレートに表示されます。

投稿2016/09/01 10:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

絞込み検索(詳細検索)であれば、mizさんの書かれているやり方が良いとおもいます。search.php自体のクエリを上書きしてしまうと、通常の検索ができなくなったりする可能性があるので、あまりお勧めしません。

「うまく取得できません」がどのような状況かがわかりませんが、tag_id1 の記事が無いだけではないでしょうか。タグのスラッグで指定する方法などもありますので、下記記事などを御覧ください。

【これは便利!WordPressのWP_Queryでよく使うコードスニペット | それからデザイン スタッフブログ】
http://sole-color-blog.com/blog/php/265/

PHP

1 // ↓ 特定の「カテゴリー」に関連付けられた投稿を表示する場合 2 'cat' => 5, // カテゴリーIDを指定 3 'category_name' => 'daily, news', // カテゴリースラッグを指定(複数の場合は「,」で区切る) 4 'category__and' => array( 2 , 6 ), // カテゴリーIDを配列で指定(カテゴリーIDを含む記事を絞り込む) 5 'category__in' => array( 2 , 6 ), // カテゴリーIDを配列で指定(カテゴリーIDを含む記事を絞り込む) 6 'category__not_in' => array( 2 , 6 ), // カテゴリーIDを配列で指定(カテゴリーIDを含まない記事を絞り込む) 7 8 // ↓ 特定の「タグ」に関連付けられた投稿を表示する場合 9 'tag' => 'cooking', // タグスラッグを指定 10 'tag_id' => 5, // タグIDを指定 11 'tag__and' => array( 2 , 6 ), // タグIDを配列で指定(タグIDを含む記事を絞り込む) 12 'tag__in' => array( 2 , 6 ), // タグIDを配列で指定(タグIDを含む記事を絞り込む) 13 'tag__not_in' => array( 2 , 6 ), // タグIDを配列で指定(タグIDを含まない記事を絞り込む) 14 'tag_slug__and' => array( 'red', 'blue' ), // タグスラッグを配列で指定(タグスラッグを含む記事を絞り込む) 15 'tag_slug__in' => array( 'red', 'blue' ), // タグスラッグを配列で指定(タグスラッグを含む記事を絞り込む)

カスタムタクソノミーなら tax_query を使えば良いと思います。下記例では query_posts を使っていますが、WP_Query と同じ引数が使えるので、頭の中で置き換えて参考にしてください。

【query_posts(WP_Queryクラス)で投稿タグを絞り込む:WordPress私的マニュアル】
http://elearn.jp/wpman/column/c20110907_01.html

投稿2016/09/02 10:01

編集2016/09/02 10:01
kei344

総合スコア69407

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問