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

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

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

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

Q&A

解決済

2回答

7688閲覧

カテゴリーの複合検索をしたい

glanglan

総合スコア36

WordPress

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

0グッド

2クリップ

投稿2017/02/14 23:37

編集2017/02/15 06:31

###前提・実現したいこと
ワードプレスで作ったサイトに
カテゴリの複合検索のコードを入れたいのです。
ネットで拾った情報をもとに、下記コードを作ってみたのですが
エラーが出てしまい、上手くいきません。
どこがおかしいか、指摘・添削いただけますでしょうか。
(多分、ネットで拾った情報の切り貼りなので、むちゃくちゃかもしれません)

###発生している問題・エラーメッセージ

Parse error: syntax error, unexpected ',' in /サーバURL/plugins/php-text-widget/plugin.php(18) : eval()'d code on line 9

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

<form method="get" action="<?php bloginfo( 'url' ); ?>"> <input name="s" id="s" type="text" placeholder="キーワードを入力"/><br /><br /> <?php wp_dropdown_categories('depth=0&orderby=name&hide_empty=1&show_option_all=▽カテゴリ1を選択&exclude=2,3'); ?> <br> <?php wp_dropdown_categories('depth=0&orderby=name&hide_empty=1&show_option_all=▽カテゴリ2を選択&exclude=4,5'); ?> <?php $args = array( 'category__in' => array( 2, 6 ) , ); $wp_query = new WP_Query($args); ?> <?php if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?> <h2><?php the_title(); ?></h2> <?php endwhile; wp_reset_postdata(); ?> <?php endif; ?><br /> <input id="submit" type="submit" value="検索" /> </form>

###試したこと
カテゴリ×タグ、の下記コードであれば一応機能するようでした

<form method="get" action="<?php bloginfo( 'url' ); ?>"> <br /><br /> <?php wp_dropdown_categories('selected=9&depth=0&orderby=id&hide_empty=1&show_option_all=▽カテゴリーを選択&exclude=2,3'); ?> <br> <?php $tags = get_tags('exclude=1,2,3'); if ( $tags ) : ?> <select name='tag' id='tag'> <option value="" selected="selected">▽タグを選択</option> <?php foreach ( $tags as $tag ): ?> <option value="<?php echo esc_html( $tag->slug); ?>"><?php echo esc_html( $tag->name ); ?></option> <?php endforeach; ?> </select> <?php endif; ?><br /> <input id="submit" type="submit" value="検索" /> </form>

よろしくお願いいたします

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/02/15 00:50

` 'category__in' => array( 2, 6 ) ) ,`の末尾の括弧閉じが不要です。
glanglan

2017/02/15 06:32

ご指摘ありがとうございます。今ご指摘箇所なおしました、これで大丈夫でしょうか
guest

回答2

0

ベストアンサー

WordPressにて、複数カテゴリーのAND検索(絞り込み検索)をできるようにするには、以下のコードを記述してください。
###functions.php

PHP

1function my_pre_get_posts_search( $query ) { 2 if ( !is_admin() && $query->is_main_query() ) { 3 if ( $query->is_search ) { 4 5 $cats = get_query_var('cat'); 6 7 $cat_array = explode( ',', $cats ); 8 9 $query->set( 'category__and', $cat_array ); 10 } 11 } 12} 13 14add_action( 'pre_get_posts','my_pre_get_posts_search' );

###検索フォーム

PHP

1<form method="get" action="<?php bloginfo( 'url' ); ?>"> 2<input name="s" id="s" type="text" placeholder="キーワードを入力"/> 3 4<?php wp_dropdown_categories('name=cat[]'); ?> 5<?php wp_dropdown_categories('name=cat[]'); ?> 6 7<input id="submit" type="submit" value="検索" /> 8</form>

ちなみに……
検索フォームのコードをsearchform.phpに書いて、使用しているテーマフォルダに置くことで、「検索」ウィジェットで表示されるコードを上書きすることができます。

投稿2017/02/15 09:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

glanglan

2017/02/19 05:02

functions.phpにいただいたコードを記述したところ search( $query ) { if ( !is_admin(~うんぬんかんぬん というバグっぽい表示が出てきたのですが 何か原因は考えられますか? ちなみに記述した場所は、最下部です。
退会済みユーザー

退会済みユーザー

2017/02/19 11:07

どんな表示が出ているのか、正確に教えていただけないと正確なことは言えないのですが……。 コピペをミスっていませんか? きちんと、`<?php `の後に、コードを書いていますか?
guest

0

追加で質問なのですが,Search.php にて
検索結果:「フリーキーワード」「カテゴリー1」「カテゴリー2」と表示したいのですが、

###search.php

<h2>検索結果:「<?php the_search_query(); ?>」</h2> <?php $cats = get_query_var('cat'); $cat_array = explode( ',', $cats ); var_dump($cat_array); foreach($cat_array as $key => $cat) { $category = get_category($cat); echo $category->cat_name; } ?>

get_query_var('cat');を使うとカテゴリーを一つしか取得できません。

アドバイスをいただけると助かります。
よろしくお願いいたします。

投稿2017/05/19 04:03

goliraz

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問