売り切れの商品を関連商品一覧に表示したくない
-
投稿者投稿
-
2016年3月26日 1:43 PM #77938no23h参加者
お世話になります。
現在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();
}
}
}2016年3月28日 9:30 AM #77940yasumaxキーマスターこんにちは。
usces_have_zaiko_anyone($post_id)
という関数をご利用ください。
ループ内は$post_id
を省略することが可能です。
ループ外で利用する場合は$post_id
を指定してください。該当商品に登録されているSKU全てが売り切れかどうかをチェックします。
全SKUのうちひとつでも在庫がある場合にtrueを返します。
質問内容は別ですが、下記投稿が参考になるかと思います。
Welcartフォーラム|[解決済み] 売り切れ表示のカスタマイズについて2016年4月3日 4:42 PM #78005no23h参加者yasumax様
ご返答ありがとうございます。
教えてくださった内容をもとに、ループ内を以下のように変更したら、
在庫があるだけの商品が表示されました。if(usces_have_zaiko_anyone()){
echo get_template_part(‘related_items’);
}しかしこのように書き直したら投稿数が毎回異なる不具合が起こります。
現在6投稿がランダムに表示されるように設定しておりますが、3件になったり1件になったりとばらつきがあります。
コードの書き方、記述場所等に問題があるのでしょうか。
何卒ご教授いただけませんでしょうか。2016年4月5日 12:11 PM #78035yasumaxキーマスターこんにちは。
「6件絞り込み → 全て売切商品を除外」という順番のため件数にバラつきがでてきます。
必ず6件表示となると、あまりいい方法じゃないかもしれないですが以下の方法が考えられるのではないでしょうか。
‘posts_per_page’=> 6
の指定を外して、それ以外の条件で絞り込んだ情報を全件取得usces_have_zaiko_anyone
を利用して、条件が合致したデータのpost_idを配列に格納- 配列に6件格納されたらループを抜ける
- 配列を元にもう一度
WP_Query
で情報取得
2016年4月8日 3:25 PM #78067no23h参加者yasumax様
ご連絡ありがとうございます。
なるほど、絞り込んだものを更にフィルタリングしてたということですね。
対策も教えていただき、ありがとうございます。
私のレベルでは少々難易度が高いですが、勉強してうまくやってみます。
ありがとうございました。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。