我正在尝试替换购物车中的产品固定链接,即我们不想返回产品,而是要返回页面。我基本上是遍历购物车,并且产品类别是订阅,然后我想更改固定链接。
我已经编写了一些应该起作用的代码,但是没有,如果我只有一种产品,它就可以正常工作,但是一旦我拥有一个以上的产品,我的代码就可以使所有东西都一样,而我可以做到。找出原因。
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 );
此代码仅应在预订类别的地方更改链接。我确定我缺少一些超级简单的东西。
感谢您的帮助:-)
答案 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文件中。应该可以。