如何在空车页面中为访客的woocommerce中保存第1项目的产品ID?

时间:2016-01-06 08:39:21

标签: php wordpress woocommerce

我正在尝试显示最初在空购物车页面(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;

1 个答案:

答案 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();