WordPressのWooCommerceのカートに入れたアイテム数をカートのアイコンで、ヘッダー部分に表示するカスタマイズを Snow Monkeyテーマで行なった。
Snow Monkeyのバージョンに注意
バージョン: 11.7.2 にて、検証している
こんなの↓
カスタマイズを行う上で助かったのが、Snow Monkey サポートフォーラムにドンピシャの記事があった。
Snow Monkeyの知見が蓄積されていて、本当にありがたい。
行なったカスタマイズは以下の通り。
functions.phpにこちらのコードを追加
/* Woocommerce カート 表示 */
add_shortcode(
'my_cart_contents_count',
function() {
ob_start();
$counts_cart_items = WC()->cart->get_cart_contents_count();
if ( $counts_cart_items == 0 ){
$quantity_class = "zero_quantity_badge quantity_badge";
}
else{
$quantity_class = "quantity_badge";
}
?>
<a class="head_cart" href="<?php echo esc_url( wc_get_cart_url() ); ?>">
<span class="cart-icon"><i class="fas fa-shopping-cart"></i></span>
<span class="<?php echo $quantity_class; ?>"><?php echo $counts_cart_items; ?></span>
</a>
<?php
return ob_get_clean();
}
);
CSSにこちらのコードを追加
* woocommerce cart icon */
span.cart-icon {
color: #333;
font-size: 28px;
}
span.quantity_badge {
position: relative;
top: -16px;
left: -10px;
}
span.quantity_badge {
position: relative;
top: -16px;
left: -10px;
background-color: #cd162c;
padding: 5px 10px;
border-radius: 16px;
color: #fff;
text-decoration: none !important;
}
.p-header-content.p-header-content--lg a.head_cart {
text-decoration: none;
}
.zero_quantity_badge{
background-color:transparent !important;
}
span.zero_quantity_badge{
color:transparent !important;
}
.c-row__col.c-row__col--fit.u-invisible-md-down {
display: block !important;
}
@media screen and (max-width: 480px) {
span.cart-icon {
font-size: 20px;
top: 16px;
left: 10px;
position: relative;
}
span.quantity_badge {
position: relative;
top: -28px;
left: 20px;
padding: 2px 6px;
border-radius: 11px;
color: #fff;
text-decoration: none !important;
font-size: 14px !important;
}
}
@media screen and (max-width: 320px){
span.cart-icon {
left: 4px;
}
span.quantity_badge {
left: 14px;
padding: 2px 6px;
}
}
/* end woocommerce cart icon */
あとは、管理画面のカスタマイザー → ヘッダー → ヘッダーコンテンツ に、下のショートコードを貼り付けるとOK。
[my_cart_contents_count]
カートが空の場合は、数字の赤色バッチを非表示にするよう、工夫してある。
↓ PCでの表示
↓ スマホでの表示
↓ カートが空の場合の表示
(以上)