在庫状態の呼び出しがうまくいかなかった

フォーラム その他 在庫状態の呼び出しがうまくいかなかった

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

    こんにちは!

    少し悩んだ箇所がありましてとある関数を追加しました。
    他の方のお役に立てればと思い投稿します。

    問題はループ文のなかで在庫状況を呼び出せませんでした。
    標準テーマではusces_get_itemZaiko(‘id’)を呼び出すようですが、なぜかうまくいきませんでした。

    query_postsからwhileループで回していたのですが、usces_get_itemZaiko(‘id’)がうまく動きませんでした。

    呼び出し部

    
    <?php        $args = array('category_name'=>'item', 'order' => 'ASC','posts_per_page'=> -1);
            $posts = query_posts( $args); ?>
        <?php while (have_posts()) : the_post(); usces_the_item(); ?>
            $status = aroma_get_itemZaiko( 'id' );
            switch( $status ){
                case 0:
                    echo '<span class="zaiko_ari">在庫あり</span>';
                    break;
                case 1:
                    echo '<span class="few">残りわずか</span>';
                    break;
                case 2:
                    echo '<span class="soldout">売り切れ</span>';
                    break;
                case 3:
                    echo '<span class="waiting">入荷待ち</span>';
                    break;
            }
            ?>
    <?php endwhile; ?>
        <?php wp_reset_query(); ?>
    

    以下をfunctions.phpに追加してうまく動きました。

    
    <?php
    function my_get_itemZaiko( $field = 'name', $post_id=NULL, $sku=NULL ) {
    	global $usces;
    	if( empty($sku) ){
    		if(isset($usces->itemsku['stock'])) {
    			$num = $usces->itemsku['stock'];
    		} else {
    			$num = (int)$usces->itemskus[0]['stock'];
    		}
    	}else{
    		$skus = $usces->get_skus( $post_id, 'code' );
    		$num = (int)$skus[$sku]['stock'];
    	}
    
    	if( 'id' == $field ){
    		$res = $num;
    	}else{
    		$res = $usces->zaiko_status[$num];
    	}
    
    	return $res;
    }
    

    もしかすると他の標準関数(usces_*)を使うとうまくいくかもしれないです。
    修正、解決の希望などではなく、どなたかが検索された際に役立てば幸いです。

    • このトピックはyousanが8年、 7ヶ月前に変更しました。
    • このトピックはyousanが8年、 7ヶ月前に変更しました。
    #75297
    kitamuuu
    参加者

    ループ内で、usces_the_item()の後にusces_have_skus()を使って$usces->itemskuに値をセットすると呼び出せるようになると思います。

    #75438
    yousan
    参加者

    アドバイスありがとうございますー!

    確かにusces_the_item();しか呼んでいませんでした。
    usces_have_skus()を呼べばよかったのですね。

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