我正在尝试显示最初在空购物车页面(cart-empty.php
)中添加到购物车的产品ID。任何人都可以帮我解决任何问题。
这是我为cart-totals.php
页面试过的代码。它保存了产品slug及其父slug,最后添加到购物车中。
$items = $woocommerce->cart->get_cart();
foreach($_SESSION['items'] as $item => $values) {
$_product = $values['data']->post;
$cartproductid = $_product->ID;
}
$product_cats = wp_get_post_terms( $cartproductid, 'product_cat' );
$url=$product_cats[0]->slug;
$parenturl=$product_cats[0]->parent;
$terms = get_the_terms($cartproductid, "product_cat");
$cat = get_term_by("id", $parenturl, "product_cat");
$newurl = $cat->slug;
答案 0 :(得分:0)
只要用户从购物车中删除商品,此代码就会显示一条消息。它可能不是你想要的,但它给你一些开始。将此代码添加到主题functions.php
或自定义插件代码:
function this_function( $title , $cart_item){
wc_add_notice( 'Visit deleted product <a href="' . get_permalink( $cart_item['product_id'] ) . '">' . $title . '</a>' );
return $title;
}
add_filter( 'woocommerce_cart_item_removed_title', 'this_function', 10, 2 );
编辑 - 更准确的解决方案:此代码在空白购物车页面上显示一条消息,其中包含指向上次删除的产品的链接。它适用于已登录的用户。如果您希望代码适用于未登录的访问者,则需要对其进行修改以使用cookie。
class empty_cart
{
public $last_product;
protected static $_instance = null;
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
function __construct()
{
add_filter( 'woocommerce_cart_item_removed_title', array($this, 'product_removed'), 10, 2 );
add_action( 'woocommerce_cart_is_empty', array($this, 'cart_is_empty'));
}
function product_removed( $title , $cart_item){
update_user_meta( get_current_user_id(), 'last_removed_product', $cart_item['product_id']);
$this->last_product = $cart_item['product_id'];
return $title;
}
function cart_is_empty(){
$last_product = $this->get_last_product();
echo 'Visit deleted product <a href="' . get_permalink( $last_product ) . '">' . get_the_title( $last_product ) . '</a>';
}
function get_last_product(){
if( isset($this->last_product) )
return $this->last_product;
else
return get_user_meta( get_current_user_id(), 'last_removed_product',true );
}
}
function empty_cart() {
return empty_cart::instance();
}
empty_cart();