如何在Woocommerce购物车中替换购物车项目产品固定链接

时间:2019-08-24 10:40:01

标签: woocommerce

我正在尝试替换购物车中的产品固定链接,即我们不想返回产品,而是要返回页面。我基本上是遍历购物车,并且产品类别是订阅,然后我想更改固定链接。

我已经编写了一些应该起作用的代码,但是没有,如果我只有一种产品,它就可以正常工作,但是一旦我拥有一个以上的产品,我的代码就可以使所有东西都一样,而我可以做到。找出原因。

function change_sub_url( $product_title, $cart_item, $cart_item_key ) 
{

    $category = array('Subscription');
    $replacement_permalink = 'https://THE_URL/subscriptions/';

    // Cart page check 
    if ( is_cart() ) 
    {
        // Get Cart of the user //
        $cart = WC()->cart->get_cart();
        foreach ( $cart as $cart_key => $cart_item )
        {
            $return_value="";
            $_product = $cart_item['data'] ;
            $product_permalink = $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '';

            // Check for product categories we're looking for Subscription
            if ( has_term( $category, 'product_cat', $cart_item['product_id'] ) ) 
                {
                    // It will return the product name on the cart page.
                    // As the filter used on checkout and cart are same.     
                    $return_value = sprintf( '<a href="%s">%s</a>', esc_url( $replacement_permalink ), $_product->get_title()); 
                    return $return_value;
                }

            $return_value = sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_title());
            return $return_value ; 
        }   
    }
}

add_filter ('woocommerce_cart_item_name', 'change_sub_url' , 10, 3 );

此代码仅应在预订类别的地方更改链接。我确定我缺少一些超级简单的东西。

感谢您的帮助:-)

1 个答案:

答案 0 :(得分:0)

使用woocommerce_cart_item_permalink过滤器挂钩是一种更简单,专用的方法,它具有以下紧凑而有效的代码:

add_filter ('woocommerce_cart_item_permalink', 'custom_cart_item_permalink' , 10, 3 );
function custom_cart_item_permalink( $permalink, $cart_item, $cart_item_key ) {
    // HERE your defined product category
    $category = array('Subscription');

    if ( is_cart() && has_term( $category, 'product_cat', $cart_item['product_id'] ) ) {
        $permalink = 'https://THE_URL/subscriptions/';
    }
    return $permalink;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。应该可以。