サポート » 使い方全般 » カスタム投稿タイプの絞り込みについて

  • 解決済 touro

    (@touro)


    https://kotori-blog.com/wordpress/refinement_search/
    こちらの記事の「カテゴリで絞り込むチェックボックス以外のパーツの検索結果ページでの記述」「タグまたはカスタムタクソノミーで絞り込むチェックボックスの検索結果ページでの記述」を参考にコードを書きました。
    検索結果は固定ページのものしか表示されず、求めている結果が出ません。
    「search.php」の最後に以下のコードを入れて、値を確認してみたのですが、

    
    <?php $post_tags = get_query_var( 'post_tag' );
    var_dump( $post_tags ); ?>
    

    結果は「string(0) “”」と中身は何も入っておりませんでした。

    下に「searchform.php」と「search.php」のコードを記載させていただきます。
    お力を貸してください。どうぞよろしくお願いいたします。

    
    searchform.php
    
    <form method="get" id="search-form" action="<?php bloginfo('url'); ?>">
      <label for="s" class="assistive-text">検索</label>
      <input type="text" name="s" id="s" placeholder="検索" />
      <div>ブランドから選ぶ</div>
      <?php
        $taxonomy_name = 'products_cat_brand';
        $taxonomys = get_terms($taxonomy_name, array('hide_empty' => false));
        if(!is_wp_error($taxonomys) && count($taxonomys)):
        foreach($taxonomys as $taxonomy):
          $tax_posts = get_posts(array('post_type' => get_post_type('products'), 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) );
      ?>
      <label><input type="checkbox" name="post_tag[]" value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></label><br>
      <?php
        endforeach;
        endif;
      ?>
      <input type="submit" value="検索" />
    </form>
    
    
    search.php
    
    <?php
    $s = $_GET['s'];
    $post_tag = $_GET['products_cat_brand'];
    
    //tax_query用
    if($post_tag){
        $taxquerysp[] = array(
                'taxonomy'=>'post_tag',
                'terms'=> $post_tag,
                'include_children'=>false,
                'field'=>'slug',
                'operator'=>'AND'
                );
    }
    ?>
    
    <div>検索条件</div>
    <?php if($s){ ?>検索キーワード:<?php echo $s; ?><br><?php } ?>
    <?php
    if (is_array($post_tag)) { ?>タグ(カスタムタクソノミー):<?php
    foreach($post_tag as $val){
    if ($val === end($post_tag)) {
    echo get_term_by('slug',$val,"products_cat_brand")->name;
        }else{
    echo get_term_by('slug',$val,"products_cat_brand")->name.", ";
    }
    }
    }
     ?>
    
    <div>検索結果</div>
    
    <?php
    query_posts( array(
        'tax_query' => $taxquerysp,
        's' => $s,
        )
    );
    ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    
    <div><?php the_title(); ?></div>
    <div><?php the_content(); ?></div>
    
    <?php endwhile; else : ?>
    
    <div>該当なし</div>
    
    <?php endif;
    wp_reset_query(); ?>
    
6件の返信を表示中 - 16 - 21件目 (全21件中)
  • DRILL LANCER

    (@rickaddison7634)

    WooCommerce は商品専用のカスタム投稿を作成するところからやってくれるようです。
    また、絞り込み用のウィジェットや現在適用されている絞り込みの条件を表示するウィジェットも用意されています。
    なので、serach.php やカスタム投稿のことは一旦忘れて、今すぐ WooCommerce をインストールするのが最も早い選択肢のように思えます。

    RICK様 ありがとうございます。

    実は、今作成しているサイトは知人に頼まれ作成しているのですが、
    確認してみたところ、決済機能などはいらず、商品記事のみを作成したいようです。
    既存のECサイトがあり、決済などのシステムは既存のECサイトを使用し
    WordPressからECサイトへの商品ページを飛びたいようです。

    記事自体の構成などは、既に設定が終わっており、あとは検索機能のみが欲しい
    とのことなので、検索結果ページを表示できれば完成といった形になります。

    この場合ですと、やはりsearch.phpを作成するのが無難でしょうか。
    よろしくお願いします。

    DRILL LANCER

    (@rickaddison7634)

    Lightning X WooCommerce の組み合わせで作られたサイトには下記があります。
    完成予想図として参考になると思います。

    後者は Lightning の開発者である Vektor 社の公式通販サイトになります。

    EC機能いらなくて絞り込みだけなら下記プラグインとかでいけるんじゃないですかね?

    https://ja.wordpress.org/plugins/search-filter/

    DRILL LANCER

    (@rickaddison7634)

    記事自体の構成などは、既に設定が終わっており、あとは検索機能のみが欲しい
    とのことなので、検索結果ページを表示できれば完成といった形になります。

    この場合ですと、やはり search.php を作成するのが無難でしょうか。

    通常の投稿とカスタム投稿で検索方式を変える場合は「Search & Filter」を使ったほうが小回りが効きます。

    また、Lightning はカスタム投稿毎に一部ウィジェットエリアのウィジェットの表示・非表示が切り替えられるので、私としては柔軟性が効きやすい「Search & Filter」を使うことをおすすめします。

    kurudrive様 RICK様 ありがとうございます。
    そこまでプラグイン無しに拘る必要もないかと思い、テストで
    「Search & Filter」を使いましたところ、驚くほど簡単に思い通りのことが
    実装できました。お二方には本当に感謝いたします。

    今後、不明な点があればフォーラムを使用させていただきます。
    今後ともよろしくお願いします。ありがとうございました。

6件の返信を表示中 - 16 - 21件目 (全21件中)
  • このトピックに返信するにはログインが必要です。