• お世話になります。

    サイト内絞込み検索の実装を試みておりますが、表題の通りで、フリーワード入力時にカテゴリやカスタムフィールドなどの条件が併用できずに行き詰っています。
    テーマはstinger3をカスタマイズして利用しています。
    以下、コードです。

    ■検索フォーム

    <form id="searchform" name="sitesearch" action="<?php echo home_url(); ?>/" method="get">
    <input name="s" id="s" type="text" />
    <input id="submit" type="submit" name="submit" value="検索" />
    <input id="カスタムフィールド1" type="checkbox" name="カスタムフィールド1" value="on">カスタムフィールド1
    <input id="カスタムフィールド2" type="checkbox" name="カスタムフィールド2" value="on">カスタムフィールド2
    カテゴリ:<?php $selectcatnum = $_POST["cat"];
    			$selectcatnum_op = 'show_option_all=指定しない&hide_empty=0&depth=1&hierarchical=1&exclude=1&title_li=&selected=' .$selectcatnum;
    			wp_dropdown_categories( $selectcatnum_op ); ?></p>
    </form>

    ■function.php(関連しそうな部分を抜粋)

    global $my_public_query_vars;
    $my_public_query_vars = array( 'カスタムフィールド1', 'カスタムフィールド2' );
    
    function my_query_vars( $public_query_vars ) {
        global $my_public_query_vars;
        return array_merge( $public_query_vars, $my_public_query_vars );
    }
    add_filter( 'query_vars', 'my_query_vars' );
    
    function my_pre_get_posts( $query ) {
        if ( ! is_admin()  ) {
            $meta_query = array();
    
            global $my_public_query_vars;
            foreach ( $my_public_query_vars as $key ) {
                if ( $val = $query->get( $key ) ) {
                    $meta_query[] = array(
                        'key'   => $key,
                        'value' => $val,
                    );
                }
            }
    
            if ( ! empty( $meta_query ) ) {
                $query->set( 'meta_query', $meta_query );
            }
        }
    }
    add_action( 'pre_get_posts', 'my_pre_get_posts' );
    
    function SearchFilter($query) {
    	if ($query->is_search) {
    		$query->set('post_type', 'post');
    	}
    	return $query;
    }
    add_filter('pre_get_posts','SearchFilter');
    
    function custom_search($search, $wp_query  ) {
    	//query['s']があったら検索ページ表示
    	if ( isset($wp_query->query['s']) ) $wp_query->is_search = true;
    	return $search;
    }
    add_filter('posts_search','custom_search', 10, 2);

    ■検索時の挙動
    「カスタムフィールド+カテゴリ」で検索した場合、正常に検索結果が表示されます。
    「フリーワード+カテゴリ」で検索した場合、選択したカテゴリは無視され、フリーワードのみでの検索結果が表示されます。
    「フリーワード+カスタムフィールド」で検索した場合、条件に合致していても検索結果は0件となります。

    お手数ですが、問題の解決策またはアドバイス等いただけましたら幸いです。
    よろしくお願いいたします。

  • トピック「サイト内検索時にフリーワードとその他条件の併用ができない」には新たに返信することはできません。