サポート » 使い方全般 » 複数タクソノミーで絞り込み結果表示

  • 解決済 kuronekoyuu

    (@kuronekoyuu)


    お世話になっております。

    下記サイトを参考に「キーワード入力」+「タクソノミーA(プルダウン)」+「タクソノミーB(プルダウン)」の絞り込み検索を作成中になります。
    http://kotori-blog.com/wordpress/refinement_search/

    検索結果ページに再度検索する為、「キーワード入力」+「タクソノミーA(プルダウン)」+「タクソノミーB(プルダウン)」を設置しておりますが、検索したキーワードによってプルダウン2つが空欄になります。(optionタグが無い状態)
    キーワード内容の一例が下記内容となります。(フリーキーワードでは空欄になる)

    例)【デジタル】で検索すると空欄だが【デジタル01】で検索すると取得されてoptionタグが表示
    ◎表示される
     http://〇〇〇.com/?tax01=xxx(ターム)&tax02=xxx(ターム)&s=デジタル01&submit=検索
    ×表示されない
     http://〇〇〇.com/?tax01=xxx(ターム)&tax02=xxx(ターム)&s=デジタル&submit=検索

    キャッシュ等の原因もあるかと考え、削除後に確認を行った上での症状となります。
    ご教授いただけると幸いです。
    何卒宜しくお願い致します。

    
    <?php
    $s = $_GET[‘s’];
    $tax01 = $_GET[‘tax01’];
    $tax02 = $_GET[‘tax02’];
    $type = $_GET[‘type’];
    $post_tag = $_GET[‘post_tag’];
    
    if($tax01){
        $taxquerysp[] = array(
        ‘taxonomy’=>’genre’,
        ‘terms’=> $tax01,
        ‘include_children’=>false,
        ‘field’=>’slug’,
        ‘operator’=>’AND’
        );
    }
    $taxquerysp[‘relation’] = ‘AND’;
    
    if($tax02){
        $taxquerysp02[] = array(
        ‘taxonomy’=>’character’,
        ‘terms’=> $tax02,
        ‘include_children’=>false,
        ‘field’=>’slug’,
        ‘operator’=>’AND’
        );
    }
    $taxquerysp[‘relation’] = ‘AND’;
    ?>
    
    <div>絞り込み</div>
    
    <form method=”get” id=”searchform” action=”<?php bloginfo(‘url’); ?>”>
    <select id=”category_from” name=”tax01″>
    <?php
        $taxonomy_name = ‘genre’;
        $taxonomys = get_terms($taxonomy_name);
        if(!is_wp_error($taxonomys) && count($taxonomys)):
        foreach($taxonomys as $taxonomy):
        $tax_posts = get_posts(array(‘post_type’ => get_post_type(), ‘taxonomy’ => $taxonomy_name, ‘term’ => $taxonomy->slug ) );
        if($tax_posts):
    ?>
        <option value=”<?php echo $taxonomy->slug; ?>”><?php echo $taxonomy->name; ?></option>
    <?php endif; endforeach; endif; ?>
    </select>
    
    <select id=”keyword_from” name=”tax02″>
    <?php
        $taxonomy_name = ‘character’;
        $taxonomys = get_terms($taxonomy_name);
        if(!is_wp_error($taxonomys) && count($taxonomys)):
        foreach($taxonomys as $taxonomy):
        $tax_posts = get_posts(array(‘post_type’ => get_post_type(), ‘taxonomy’ => $taxonomy_name, ‘term’ => $taxonomy->slug ) );
        if($tax_posts):
    ?>
        <option value=”<?php echo $taxonomy->slug; ?>”><?php echo $taxonomy->name; ?></option>
    <?php endif; endforeach; endif; ?>
    </select>
    
    <div class=”searchInput”>
        <input type=”text” name=”s” id=”s” placeholder=”製品名” value=”<?php echo $s; ?>” />
    </div>
    </form>
    
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    get_post_type() は現在の投稿の投稿タイプを取得します。検索結果ページなどでは、検索結果によって変わります。
    https://wpdocs.osdn.jp/関数リファレンス/get_post_type

    'post_type' => get_post_type(),

    'post_type' => 'post',

    トピック投稿者 kuronekoyuu

    (@kuronekoyuu)

    ishitaka様

    的確なアドバイス頂き有難うございます。
    無事解決しました。

    「現在の投稿の投稿タイプを取得します。検索結果によって変わる」をヒントにキーワード入力箇所を指定タクソノミーへ遷移する変更を加えた所、正常に動作する事が確認出来ました。
    これによって’post_type’ => get_post_type()が上手く動作するように繋がったのかは、現時点で把握出来てはいませんが現状解決出来た事をお知らせします。

    
    <input type="text" name="s" id="s" placeholder="製品名" value="<?php echo $s; ?>" />
    

    
    <input type="hidden" name="post_type" value="タクソノミー名">
    <input id="searchword" type="text" name="s" value="<?php if ( is_post_type_archive('タクソノミー名') ){ echo get_search_query(); } ?>">
    
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「複数タクソノミーで絞り込み結果表示」には新たに返信することはできません。