我想在购物车为空时为购物车页面设计自己的模板。我添加了以下代码片段来完成。
add_action( 'woocommerce_cart_is_empty', 'custom_empty_cart_message', 10 );
remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10 );
remove_action( 'woocommerce_cart_item_removed', 'action_woocommerce_cart_item_removed', 10);
add_action( 'woocommerce_cart_item_removed', 'custom_empty_cart_message', 10);
function custom_empty_cart_message() {
$html = '<a href="http://abcd.com/wp-content/lo.png"><img class="size-medium wp-image-25512 aligncenter" src="http://abcd.com/wp-content/lo.png" alt="" width="300" height="169" /></a>';
$html .= wp_kses_post( apply_filters( 'wc_empty_cart_message', __( '<p style="text-align: center;"><B>Your Shopping Cart Looks Empty</B></p><p style="text-align: center;">Your shopping cart is waiting</br>Give it purpose</p>', 'woocommerce' ) ) );
echo $html . '</p></div>';
}
现在发生的情况是,直接访问购物车页面时效果很好。除非将项目添加到购物车 - >访问购物车页面 - >删除已添加的项目显示空白页面而不是我创建的自定义方法。然后,如果刷新页面,它可以正常工作,自定义方法加载完美。为什么会出现这种情况?为什么删除项目后我会看到空白页?
提前干杯。
发现了。
解决方案是您必须使用 cart-empty 类以及下面的方法。
remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10 );
add_action( 'woocommerce_cart_is_empty', 'custom_empty_cart_message', 10 );
function custom_empty_cart_message() { ?>
<div class="col-12 offset-md-1 col-md-10">
<div class="cart-empty">
<a href="http://abcd.com/wp-content/lo.png"><img class="size-medium wp-image-25512 aligncenter" src="http://abcd.com/wp-content/lo.png" alt="" width="300" height="169" /></a>
<p style="text-align: center; font-weight: bold;">Your Shopping Cart Looks Empty</p>
<p style="text-align: center;">Your shopping cart is waiting</br>Give it purpose</p>
</div>
</div>
<?php
}
定制愉快。
WooCommerce 中有这个文件
wp-content/plugins/woocommerce/templates/cart/cart-empty.php
您可以在主题中复制此页面(带有文件夹结构),并且您应该能够自定义它!
这对我来说既适用于空购物车页面本身(只是直接导航到没有产品的购物车),也适用于通过“从购物车中删除”操作删除所有产品时的购物车页面:
remove_action( 'woocommerce_cart_is_empty', 'wc_empty_cart_message', 10 );
add_action( 'woocommerce_cart_is_empty', 'custom_empty_cart_message', 10 );
function custom_empty_cart_message() {
$notice = wc_print_notice( wp_kses_post(
apply_filters( 'wc_empty_cart_message', __( 'Your cart is ready for your selection. Browse our range and continue adding items.', 'woocommerce' ) )
), 'notice', array(), true );
// This adds the cart-empty classname to the notice to preserve backwards compatibility (for styling purposes etc)
$notice = str_replace( 'class="woocommerce-info"', 'class="cart-empty woocommerce-info"', $notice );
// Return the notice within a consistent wrapper element. This is targeted by some scripts such as cart.js.
echo '<div class="wc-empty-cart-message">' . $notice . '</div>';
}