2017年8月31日木曜日

Welcart -- 自作テンプレートでの「在庫数」表示

Welcartで商品詳細ページで在庫数を表示する。

こちらのページを参考にさせてもらいました。

まめ子さん
http://welcustom.net/show-count-stocks/

ネットで出ている情報。商品詳細ページのテンプレートは「wc_item_single.php」。

ここに上記ページに載っている

<?php
$stock_rest = usces_the_itemZaikoNum('return');
if( usces_get_itemZaiko('id') <= 1 ){
    if( $stock_rest >= 15 ){ //在庫数が15以上の場合
        echo '在庫有り';
    } elseif ( 0 < $stock_rest && $stock_rest < 15 ){ //在庫数が0より大きく15未満の場合
        echo $stock_rest. '点在庫有り';
    }
} else { //その他の場合
    usces_the_itemZaikoStatus(); //在庫状態を表示
}
?>


を40数行目当たり、

<div class="field"><?php _e('stock status', 'usces'); ?> : <?php usces_the_itemZaikoStatus(); ?>

の下に貼り付けてやると、しっかりと在庫数が表示されました。

ありがたや、ありがたや。
なのですが、このデフォルトテンプレートは商品画像がサムネイルだけ、投稿の本文は出ない、など外観を成形するにはかなりの手間がかかりそうでした。
途中まで作っていた自作のテンプレにしよう、ということで、上記スクリプトを貼り付け。
ところが、これだけではなにも表示してくれません。
さんざん検索して探し回ったのですが、結局見つからず、試しに「wc_item_single.php」の中身をそっくりそのまま自作テンプレに「ctrl + A」-->>「ctrl + V」したところ、まったく同じに動作しました。場所やファイル名は関係ないということ。
ならば、スクリプトのどこかに秘密が隠されているに違いない。
といことで、自作の内容を元に戻し、「wc_item_single.php」のなかのめぼしい個所を下の方に貼り付けてみました。
それがこちら。


<!--価格表示 テスト ここから-->


<!--デフォルト テンプレ部分-->

<div <?php post_class() ?> id="post-<?php the_ID(); ?>">

<?php usces_remove_filter(); ?>
<?php usces_the_item(); ?>

<?php if(usces_sku_num() === 1) : usces_have_skus(); ?>

<div class="field"><?php _e('stock status', 'usces'); ?> : <?php usces_the_itemZaikoStatus(); ?></div>

<?php endif; ?>

<!--デフォルト テンプレ部分 おわり-->


<!--在庫数を実数表示 いただいた箇所-->

<?php
$stock_rest = usces_the_itemZaikoNum('return');
if( usces_get_itemZaiko('id') <= 1 ){
    if( $stock_rest >= 15 ){ //在庫数が15以上の場合
        echo '在庫有り';
    } elseif ( 0 < $stock_rest && $stock_rest < 15 ){ //在庫数が0より大きく15未満の場合
        echo $stock_rest. '点在庫有り';
    }
} else { //その他の場合
    usces_the_itemZaikoStatus(); //在庫状態を表示
}
?>

<!--在庫数を実数表示(終了)-->

</div>
<!--価格表示 テスト ここまで-->



「デフォルト テンプレ部分」はもとは、ほかにもたくさんのタグやらがあるのですが、関係なさそうなのは削除。
これでも必要最小限かどうかはわかりませんが、何とか在庫数を表示することができました。
ちなみに<?php endif; ?>は
Parse error: syntax error, unexpected $end in
というエラーが出たので入れました。
ループの閉じ忘れだそうです。
オリジナルはもっと下の方で閉じているのでしょう。

参考ページ
https://php1st.com/578/




さらに、不用なタグを削除。
とりあえず(というのは、まだメール送信まで確認していないので。)完成形はこんな感じ。
一覧ページでは問題なかったのですが、詳細ページ(SINGLE PAGE)では、カートボタンと数量設定フォームが消えてしまったので、
<?php wp_reset_query(); ?>
しました。
上部の3行はおまじないのようなものなのでしょう。
これを消すと下が働きません。


<!--在庫数 ここから-->

<?php usces_the_item(); ?>
<?php if(usces_sku_num() === 1) : usces_have_skus(); ?>
<?php endif; ?>


<!--在庫数を実数表示-->

<?php
$stock_rest = usces_the_itemZaikoNum('return');

if ( $stock_rest < 6 ){ //在庫数が6未満の場合
      echo '残りわずか';
      echo $stock_rest. '個となりました';
    } elseif ( $stock_rest > 6 ) { //その他の場合
      usces_the_itemZaikoStatus(); //在庫状態を表示

}
?>

<!--在庫数を実数表示(終了)-->

<!--在庫数 ここまで-->

<?php wp_reset_query(); ?>






これで、自作テンプレでも在庫数取得&表示が可能になるので、「在庫がなくなったら、こうしよう・・・。」といった希望が叶えられそうですゎ。
今のところ6個未満で在庫数を表示し購買意欲を煽るシステムにしています。











0 件のコメント: