サポート » 使い方全般 » マルチサイトで記事をカテゴリでAND検索し、検索条件とともに表示したい

  • 解決済 tohaku

    (@tohaku)


    現在マルチサイトで構築中です。
    サイトのヘッダ(全サイト共通)にサーチのフォームを設置し、子サイトの記事をアンド検索したいと考えています。文字コードはutf-8です。

    その際 
    【ブランド(親カテゴリ)】
     □AAAAA(20) □BBBBB(15) □CCCCC(42)
    【サイズ(親カテゴリ)】
     □9号(15) □11号(20)……
    のように、チェックボックス+カテゴリ名+(カウント数)で検索条件を表示したいのです。

    http://www.webopixel.net/wordpress/584.html
    の「複数のカテゴリーで検索したい」と「複数のカテゴリーで絞り込み検索したい」を参考に、テンプレートには

    <form method="get" action="<?php $child_blog_url = get_blog_option('BLOG ID', 'siteurl');echo $child_blog_url.'/' ?>">//子サイトを検索する
    <ul>
    <?php
    switch_to_blog('BLOG ID');//目的のブログに切り替える
    $cats = get_categories('child_of=1');// ブランド(ID=1)の子カテゴリのみ
    		foreach($cats as $cat) :
    			echo '<li><label>'. '<input type="checkbox" value="' . $cat->cat_ID . '" name="cat[]" />'. esc_html($cat->cat_name) .'('. $cat->category_count .')</label></li>';
    		endforeach;
    restore_current_blog();//本来のブログに戻す
    ?>
    </ul>
    (以下親カテゴリごとにUL繰り返し)
    	<input id="submit" type="submit" value="検索" />
    </form>

    と記述することで、親カテゴリごとに子カテゴリをリスト化、カウント数を表示するところまではできました。
    しかしfunction.phpに

    function get_custom_field_posts_group($group) {
    	if(isset($_REQUEST['cat'])) {
    		global $wpdb;
    		$group = 'wp_posts.ID HAVING count(*) >= '.count($_REQUEST['cat']);
    		return $group;
    	}
    }
    add_filter('posts_groupby', 'get_custom_field_posts_group');

    と記述しても、AND検索の結果を得ることができません。
    条件をひとつしかチェックしなくても、「記事が見つかりませんでした。」と出てしまいます。
    パラメーターを見ると「?cat%5B%5D=22&cat%5B%5D=51」と条件を選択した数だけ「cat%5B%5D=」が繰り返され、[]も文字化けしてしまっているようです。
    これらの問題はどうしたら解決できるでしょうか?

    また、検索がうまく行ったら、選択したカテゴリを「,」で区切ってテキスト表示したいと考えています。こちらはどうすればいいのかのヒントもお願いできますでしょうか。

    何分勉強をはじめたばかりで、実力不足なのは重々承知しているのですが、がんばりますのでご指導よろしくお願いします。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • 現在私のスキルでは実現できそうもないので、あきらめました。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「マルチサイトで記事をカテゴリでAND検索し、検索条件とともに表示したい」には新たに返信することはできません。