welcart 商品一覧ページに「在庫有り」のみ表示させる

Filed under: functions.php,welcart — kdcs @ 19年12月23日 月曜日

通常は在庫有り無し関係なく公開されている商品を一覧表示するが、これを在庫がある商品だけを表示できるようにする。

チェックボックスにチェックを入れると在庫有り商品のみ表示する

<!-- 在庫ありのみ表示-->
<form method="GET" action="<?php echo get_category_link($cat); ?>">
    <input type="checkbox" name="sort" value="zaiko" onChange="this.form.submit()"
           <?php if(isset($_GET['sort']) == 'zaiko'){ echo 'checked';} ?>>
    <label>在庫有りのみ表示</label>
</form>
<!-- 在庫ありのみ表示(終了)-->

以下をfunction.phpに記述

function my_sort_item( $query ) {
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }
    if ( $query->is_category() ) {
        $sort = isset($_GET['sort']) && is_string($_GET['sort']) ? $_GET['sort'] : '';
        $cat = isset($_GET['cat']) ? $_GET['cat'] : '';
 
        if ( $sort !== 'zaiko' ) {
            return;
        }
 
        $args = array(
            array(
                'key' => '_isku_',
                'value' => '"stocknum";s:1:"0"',
                'compare' => 'NOT LIKE',
            ),
            array(
                'key' => '_isku_',
                'value' => '"stock";s:1:"2"',
                'compare' => 'NOT LIKE',
            ),
        );
 
        $query->set('meta_query' , $args);
    }
}
add_action( 'pre_get_posts', 'my_sort_item', 10, 3);

参照するデータはWordPressデータベース、postmetaのmeta_keyが_isku_の中
stocknum=在庫数 s:1:”0″=在庫0(数値)
stock=在庫ステータス s:1:”2″=在庫ステータスが「売切れ」
0 在庫有り
1 在庫僅少
2 売切れ
3 入荷待ち
4 廃盤
※s:1の1は一桁という意味っぽい
例えば在庫数100ならs:3:”100″ 在庫数10000ならs:5:”10000″になる

サイト内検索

カテゴリー

最近の投稿

« |welcart 商品一覧ページに「在庫有り」のみ表示させる| »
↑上に戻る