Welcartで一通りの基本機能ができたので、巷でよく見る「カートの中身」ボックスに取り掛かりました。
個数や金額は難なく表示できたのですが、
カートに何も入っていないときと入っているとき。
さらにショップや購入画面にいるときとそれ以外のページにいるときで表示をかえるにはどうしたらいいのか。
カテゴリ分けは基本だが、カテゴリを追加したときに記述を変えないで済む方法。
ショップの商品はすべて「ITEM」カテゴリに入っているので、これを取得すればOK。
変えるべき表示とは商品が入っているときの「購入画面へ」と入っていないときの「ショップへ行く」のリンクテキスト。
ショップにいるときでカートが空の時は非表示、カートに商品が入っているときは「購入画面へ」、購入画面にいるときはこのボックス全体を非表示にする。
まず、ボックス全体は”is_page( get_option( 'usces_cart_number' ))”で購入画面にいるにいるかどうかを判別。
購入画面では非表示に。
購入画面以外では、
”usces_is_cart() ”をつかって、商品が入っていたら「購入画面へ」を表示、入っていなかったら「ショップへ行く」を表示。
そして、ショップにいるときは最上位カテゴリが「ITEM」であることを判別し、”welcart-incart-box-itempage”のセレクタ、「ショップへ行く」を”display:none;”しました。
商品が入っていたら「購入画面へ」は表示します。
これで完璧。
参考サイトはこちら。
http://securavita.net/get_category_parent_root/#category_archive_root
ちなみに、頂いたコードのままだと固定ページ(page)でエラーが発生する。
なので、”if(is_page()):”で括ってページを丸ごとエスケープしました。
固定ページなのに親カテゴリを探そうとするとエラーになるのでしょうか。
エラー箇所は「$parents = explode( ',',$parents );」の部分でした。
「explodeは”$parents”が文字列であることを期待している・・・」とか何とか。
よくはわかりません。
<!--/welcart カートの中身ボックス-->
<?php if ( is_page( get_option( 'usces_cart_number' ))): ?>
//カート画面ではボックスは非表示
<?php else: ?>
<div id="welcart-incart-box">
<div id="welcart-incart-box-title">お買い物状況</div>
<div id="welcart-incart-box-totalquantity">個数:<?php usces_totalquantity_in_cart(); ?>個</div>
<div id="welcart-incart-box-totalprice">合計金額:<?php usces_totalprice_in_cart(); ?>円</div>
<?php if( usces_is_cart() ): ?>
//カートに入っていいたら
<div id="welcart-incart-box-cartpage"><a href="http://suzukiayumu.moo.jp/zakuro/usces-cart/">購入画面へ</a></div>
<?php elseif ( !usces_is_cart()): ?>
<div id="welcart-incart-box-itempage"><a href="http://example.com">ショップへ行く</a></div>
<?php endif; ?>
<?php endif; ?>
<?php if( ! is_page() ): ?> //固定ページはエスケープする
//ここからコピペ
<?php
$cats = get_the_category();
$category = $cats[0];
$parents = get_category_parents( $category->term_id, false, ',', true);
$parents = explode( ',',$parents );
$root = get_category_by_slug( $parents[0] );
?>
//ここまでコピペ
<?php if( $root->name == 'ITEM' ): ?>
//最上位のカテゴリが「ITEM」だったら「ショップへ行く」ボタンを消す。
<style>
#welcart-incart-box-itempage{
display:none;
}
</style>
<?php endif; ?>
<?php endif; ?>
<!--/welcart-incart-box end--></div>
<!--/wel cart カートの中身ボックス 終わり-->
2017年9月27日水曜日
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿