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個未満で在庫数を表示し購買意欲を煽るシステムにしています。











2017年8月29日火曜日

Welcart ログインページ 自作テーマの場合

Welcartは基本、メーカー提供のテーマを使うのがいいらしい。あたりまえだけど。


会員関連のページ、ログインや新規登録などに対応する固定ページ「メンバー usces-member」。

自作のテーマでWelcartを導入した場合「wc_templates」フォルダを自作のテーマの中に入れなければ、間違えなく画面は真っ白のまま。

ただし「wc_templates」と同じく有効時に生成される「usces-cart」のほうはメール送信まではまでは確認してないが、2ステップくらいまでは正常に表示していた。

なのでなおのこと「wc_templates」だけがテンプレートを読み込まない原因が不可解で、Welcartのフォーラムやらを彷徨ってしまった。

やっとのことでたどり着いたのが、↓こちらのページ↓

http://welcustom.net/welcart-template-set/

「カスタマイズしたいテンプレートをWelcartプラグインフォルダ内の「wc_template」からコピーしてきて設置します。すると、自動的にそちらが読み込まれるようになります。」

との記述にハッとしました。

Welcartのフォルダが自作のテーマフォルダと同じ階層にあるのが不思議だったのだが、その理由はさておき、階層の「welcart_default」の中にある「wc_login_page.php」や「wc_new_member_page.php」など見に行くはずがないのは当たり前といえば当たり前だよな。


Welcartを自作テーマで導入したときにまずやるべきこと。

wp-content > themes > welcart_default > wc_templates
このフォルダを

wp-content > themes > 自作テーマフォルダ > wc_templates
ここにコピー。

ちなみに、参考ページでは
「「wc_template」からコピーして」
とありますが、中身の「cart」、「member」を同階層設置したのでは読み込みませんでした。当方の環境、ロリポップでは。

また、「wc_templates」フォルダごとのコピーでは、WPの「テーマの編集」画面に「wc_item_single.php」と「wc_search_page.php」しか出てこないので、そこはちょっと不便かも。

今回のISSUEは久々何年振りかに「これ、導入すんのやめようかな。」と思うくらい自分にとって意味不明、理解不能でした。
”テーマ”とそのテーマが参照する”テンプレート”の位置的な事柄の単純ながら理解するには大変なWPの構造的概念にほんのちょっと触れたような気がした。
とにかく、実施に稼働までこぎつけられればと思う。













2017年8月28日月曜日

ボックスの行を交互に着色

表題の通り。
いつか使えそうなので記録。

数式で奇数を指定する場合には2n+1、数式で偶数を指定する場合には2n+0となります。

スタイルシート部分は外部ファイル(sample.css)に記述。
table.sample tr:nth-child(2n+1) {background-color:#FFCCCC;}
table.sample tr:nth-child(2n+0) {background-color:#CCFFCC;}


参考ページ
http://www.htmq.com/selector/nth-child.shtml

welcart 「買い物を続ける」ボタン

ここ2~3年本格的にWPをいじってなかったので「こんないいプラグインがあるんだ?!」と感心しきりのこの頃ですが、無料でここまでできるのはホントにありがたいことです。
「Welcart Shop」というカートシステムのプラグイン。最近できたのではないのでしょうが、導入したのは初めて。
前回、商品一覧ページにカートボタンをつける方法を投稿しましたが、今回はカート画面中の「買い物を続ける」ボタンの問題。
デフォルト、というか何もしないと押しても反応がありませんでした。
今回参考にさせて頂いたのは奈蜘-Nachi-さんという方の記事です。
こちらの記事には

「調べていくうちに、同じことで悩んでいるブログを見つけることがあってお!って思っても、やっぱり解決策は書いてなくて、
イライラしてしまったこともありました;;」

と苦闘されている様子が描かれていて、「みんなそうなのかな。」とか思いながら楽しく勉強させていただきました。

https://ameblo.jp/nach1to/entry-11597579703.html



追記するファイルへのパスは
<?php site_url(); ?>/wp-content/plugins/usc-e-shop/functions/function.php

下のをもらって
add_filter('usces_filter_cart_prebutton', 'my_cart_prebutton');
function my_cart_prebutton(){
return ' onclick="location.href=\'ボタンを押した時に飛ぶURL\'"';
}

「'onclick="location.href=\'ボタンを押した時に飛ぶURL\'"'」のところを

'onclick="javascript:window.history.back(-1);return false;"'

にしてみました。


当方の環境はロリポップです。
スクリプトの詳しい内容、問題が解決する理由はわかりませんが、とにかく「買い物を続ける」事ができるようになりました。


追記

'onclick="javascript:window.history.back(-1);return false;"'
では複数回商品を削除したときエラーになる。
あとで修正。