如何防止我的购物车菜单在空时显示为零?
How to prevent my cart menu from displaying zero when it is empty?
在 WordPress + WooCommerce 网站上,我在菜单中添加了一个购物车图标,圆圈内包含项目数量,方法是将以下代码放入 functions.php 文件中:
/* Add cart to menu */
add_filter( 'wp_setup_nav_menu_item','my_item_setup' );
function my_item_setup($item) {
if ( ! is_admin() ) {
if ( class_exists( 'woocommerce' ) ) {
global $woocommerce;
if ( $item->url == esc_url( wc_get_cart_url() ) ) {
if (is_null($woocommerce->cart)){
} else {
if( get_locale() == 'fr_FR' ) {
$item->title = '<span style="position:relative;"><i class="fal fa-shopping-cart" style="font-size:1.25em;"></i><span class="cart-basket d-flex align-items-center justify-content-center">'. '' . $woocommerce->cart->get_cart_contents_count() . '</span></span>';
}
}
}
}
}
return $item;
}
/**
* Updates the content of the cart link via AJAX when adding an item */
add_filter( 'woocommerce_add_to_cart_fragments', 'my_woocommerce_add_to_cart_fragments' );
function my_woocommerce_add_to_cart_fragments( $fragments ) {
// Add our fragment
$fragments['li.menu-item-type-woocommerce-cart'] = my_item_setup( '');
return $fragments;
}
它运行良好,但我希望当购物车为空时圆圈和数字不出现(当前圆圈在这种情况下显示为“0”),只有购物车图标,你知道这是否是可能的,如果是的话,你能告诉我允许它的代码吗?
感谢您的帮助!
(抱歉我的英语不好……)
可以通过有条件地添加内部 <span>
来实现 just if get_cart_contents_count() > 0
:
if( get_locale() == 'fr_FR' ) {
$innerBasket = '';
$count = $woocommerce->cart->get_cart_contents_count();
if ($count > 0) {
$innerBasket = '<span class="cart-basket d-flex align-items-center justify-content-center">' . $count . '</span>';
};
$item->title = '<span style="position:relative;"><i class="fal fa-shopping-cart" style="font-size:1.25em;"></i>' . $innerBasket . '</span>';
}
您还可以使用WC()
全局核心函数来获取要计数的购物车商品,然后根据计数制作条件。
$cart_count = WC()->cart->cart_contents_count; // Set variable for cart item count
$cart_url = wc_get_cart_url(); // Set variable for Cart URL
if ( $cart_count > 0 ) {
if( get_locale() == 'fr_FR' ) {
$item->title = '<span style="position:relative;"><i class="fal fa-shopping-cart" style="font-size:1.25em;"></i><span class="cart-basket d-flex align-items-center justify-content-center">'. '' . $cart_count . '</span></span>';
}
}
在 WordPress + WooCommerce 网站上,我在菜单中添加了一个购物车图标,圆圈内包含项目数量,方法是将以下代码放入 functions.php 文件中:
/* Add cart to menu */
add_filter( 'wp_setup_nav_menu_item','my_item_setup' );
function my_item_setup($item) {
if ( ! is_admin() ) {
if ( class_exists( 'woocommerce' ) ) {
global $woocommerce;
if ( $item->url == esc_url( wc_get_cart_url() ) ) {
if (is_null($woocommerce->cart)){
} else {
if( get_locale() == 'fr_FR' ) {
$item->title = '<span style="position:relative;"><i class="fal fa-shopping-cart" style="font-size:1.25em;"></i><span class="cart-basket d-flex align-items-center justify-content-center">'. '' . $woocommerce->cart->get_cart_contents_count() . '</span></span>';
}
}
}
}
}
return $item;
}
/**
* Updates the content of the cart link via AJAX when adding an item */
add_filter( 'woocommerce_add_to_cart_fragments', 'my_woocommerce_add_to_cart_fragments' );
function my_woocommerce_add_to_cart_fragments( $fragments ) {
// Add our fragment
$fragments['li.menu-item-type-woocommerce-cart'] = my_item_setup( '');
return $fragments;
}
它运行良好,但我希望当购物车为空时圆圈和数字不出现(当前圆圈在这种情况下显示为“0”),只有购物车图标,你知道这是否是可能的,如果是的话,你能告诉我允许它的代码吗?
感谢您的帮助!
(抱歉我的英语不好……)
可以通过有条件地添加内部 <span>
来实现 just if get_cart_contents_count() > 0
:
if( get_locale() == 'fr_FR' ) {
$innerBasket = '';
$count = $woocommerce->cart->get_cart_contents_count();
if ($count > 0) {
$innerBasket = '<span class="cart-basket d-flex align-items-center justify-content-center">' . $count . '</span>';
};
$item->title = '<span style="position:relative;"><i class="fal fa-shopping-cart" style="font-size:1.25em;"></i>' . $innerBasket . '</span>';
}
您还可以使用WC()
全局核心函数来获取要计数的购物车商品,然后根据计数制作条件。
$cart_count = WC()->cart->cart_contents_count; // Set variable for cart item count
$cart_url = wc_get_cart_url(); // Set variable for Cart URL
if ( $cart_count > 0 ) {
if( get_locale() == 'fr_FR' ) {
$item->title = '<span style="position:relative;"><i class="fal fa-shopping-cart" style="font-size:1.25em;"></i><span class="cart-basket d-flex align-items-center justify-content-center">'. '' . $cart_count . '</span></span>';
}
}