更新(定义产品类别时的正确自定义网址)
使用挂在 woocommerce_add_to_cart_redirect 过滤器挂钩中的自定义函数,当产品添加到购物车时将重定向客户(对于已定义的产品类别):
add_filter( 'woocommerce_add_to_cart_redirect', 'conditional_add_to_cart_redirection', 99, 1 );
function conditional_add_to_cart_redirection( $url ) {
// ==> HERE define your product category or categories in the array
$category = array( 'clothing', 'music' );
if ( ! isset( $_REQUEST['add-to-cart'] ) ) return $url; // Very important!
// When it's available (on add to cart click), get the product ID
$product_id = absint( $_REQUEST['add-to-cart'] );
// Get the custom url from product post meta data
$custom_url = get_post_meta( $product_id, '_rv_woo_product_custom_redirect_url', true );
// Exit to normal, If the custom URL redirection is not set in the product
if( empty( $custom_url ) ) return $url;
// Custom redirection only for your defined product category(ies)
if( has_term( $category, 'product_cat', $product_id ) ){
// Clear add to cart notice (with the cart link).
wc_clear_notices();
$url = $custom_url; // Updated here
}
return $url;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
代码在 Woocommerce 3+ 上经过测试并且可以运行
添加到购物车重定向不适用于商店和档案页面上的 ajax 添加到购物车。因此,对于商店和档案页面,您将有在这 2 个选项之间进行选择:
- 在商店和档案页面(WC 设置 > 产品 > 显示)上禁用 ajax 添加到购物车。
- 添加以下代码,将添加到购物车按钮替换为链接到产品的按钮:
这第二个选项似乎是最好的(因为这仅对某些产品有条件):
// Conditionally changing add to cart button link and text on shop and archives
add_filter( 'woocommerce_loop_add_to_cart_link', 'replacing_add_to_cart_button', 10, 2 );
function replacing_add_to_cart_button( $button, $product ) {
if( $product->is_type( 'variable-subscription' ) || $product->is_type( 'variable' ) ) return $button;
// ==> HERE define your product category or categories in the array
$category = array( 'clothing', 'music' );
// Check that the custom url from product post meta data is not empty
$custom_url = get_post_meta( $post->ID, '_rv_woo_product_custom_redirect_url', true );
if( empty( $custom_url ) ) return $button;
// Check if the current product has a defined product category(ies)
if( ! has_term( $category, 'product_cat', $post->ID ) ) return $button;
$button_text = __( 'View product', 'woocommerce' );
$button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';
return $button;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
代码在 Woocommerce 3+ 上经过测试并且可以运行