売り切れの商品を関連商品一覧に表示したくない

フォーラム 使い方全般 売り切れの商品を関連商品一覧に表示したくない

  • このトピックには4件の返信、2人の参加者があり、最後にno23hにより8年、 7ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #77938
    no23h
    参加者

    お世話になります。
    現在welcartでオンラインショップを運営しております。
    タイトルの通りなのですが、商品詳細ページの最下部に同カテゴリーの商品をランダムで表示しておりまして、現状全ての商品が対象になっているのですが、ここから売り切れの商品は除外することは可能でしょうか。
    商品は全て一点もので、トップページの一覧においては、売れてしまったあとでもしばらくの期間表示しているのですが、関連のポストにおいてはまだ販売中のものだけを表示したいのです。

    以下関連商品を生成するコードなのですが、これらに何かを追記することで上記要望は可能でしょうか。
    何卒お力添えをお願いいたします。

    function related_items_list(){
    global $post;
    $categories = get_the_category($post->ID);
    if( $categories ){
    $category_ids = array();
    foreach( $categories as $category){
    $category_id = $category->term_id;
    $category_child = get_term_children($category_id, ‘category’);
    if($category_child != true){
    $category_ids[] = $category->parent;
    }
    }
    $args=array(
    ‘category__in’ => $category_ids,
    ‘post__not_in’ => array($post->ID),
    ‘posts_per_page’=> 6,
    ‘ignore_sticky_posts’=> 1,
    ‘orderby’ => rand,
    );
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) {
    $my_query->the_post();
    echo get_template_part(‘related_items’);
    }
    wp_reset_query();
    }
    }
    }

    #77940
    yasumax
    キーマスター

    こんにちは。

    usces_have_zaiko_anyone($post_id)という関数をご利用ください。
    ループ内は$post_idを省略することが可能です。
    ループ外で利用する場合は$post_idを指定してください。

    該当商品に登録されているSKU全てが売り切れかどうかをチェックします。
    全SKUのうちひとつでも在庫がある場合にtrueを返します。
    質問内容は別ですが、下記投稿が参考になるかと思います。
    Welcartフォーラム|[解決済み] 売り切れ表示のカスタマイズについて

    #78005
    no23h
    参加者

    yasumax様
    ご返答ありがとうございます。
    教えてくださった内容をもとに、ループ内を以下のように変更したら、
    在庫があるだけの商品が表示されました。

    if(usces_have_zaiko_anyone()){
    echo get_template_part(‘related_items’);
    }

    しかしこのように書き直したら投稿数が毎回異なる不具合が起こります。
    現在6投稿がランダムに表示されるように設定しておりますが、3件になったり1件になったりとばらつきがあります。
    コードの書き方、記述場所等に問題があるのでしょうか。
    何卒ご教授いただけませんでしょうか。

    #78035
    yasumax
    キーマスター

    こんにちは。

    「6件絞り込み → 全て売切商品を除外」という順番のため件数にバラつきがでてきます。

    必ず6件表示となると、あまりいい方法じゃないかもしれないですが以下の方法が考えられるのではないでしょうか。

    1. ‘posts_per_page’=> 6の指定を外して、それ以外の条件で絞り込んだ情報を全件取得
    2. usces_have_zaiko_anyoneを利用して、条件が合致したデータのpost_idを配列に格納
    3. 配列に6件格納されたらループを抜ける
    4. 配列を元にもう一度WP_Queryで情報取得
    #78067
    no23h
    参加者

    yasumax様

    ご連絡ありがとうございます。
    なるほど、絞り込んだものを更にフィルタリングしてたということですね。
    対策も教えていただき、ありがとうございます。
    私のレベルでは少々難易度が高いですが、勉強してうまくやってみます。
    ありがとうございました。

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