我试图连接到“添加到购物车”重定向,更改特定产品ID的URL作为起点,我发现了以下代码(来源:https://jeroensormani.com/redirect-users-after-add-购物车/)
function my_custom_add_to_cart_redirect( $url ) {
if ( ! isset( $_REQUEST['add-to-cart'] ) || ! is_numeric( $_REQUEST['add-to-cart'] ) ) {
return $url;
}
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );
// Only redirect the product IDs in the array to the checkout
if ( in_array( $product_id, array( 1, 16, 24) ) ) {
$url = "https://mywebsite.com/";
}
return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
这似乎得到了别人的认可。对我来说,当对它应用条件时,似乎忽略了重定向注入。当条件被排除在外时,它将起作用:
function my_custom_add_to_cart_redirect( $url ) {
$url = "https://mywebsite.com/";
return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
我的结论/猜测是,条件或过滤器中有些东西已经过时,但是我无法弄清楚出了什么问题。我已经研究了基于woocommerce_add_to_cart_redirect钩子的其他模拟器代码,并尝试了无数片段和功能组合,但是无论何时将条件应用到其中,我都无法使它们起作用。
[编辑]现在,我考虑了一下,这很可能是一个查询问题。但是不太确定该怎么做。
任何帮助将不胜感激。
首先,woocommerce_add_to_cart_redirect
过滤器挂钩有2个可用参数。所以是的,您找到的代码有些过时了。
对于每个人,如果已启用WooCommerce设置>产品(选项卡)上的“添加成功后重定向到购物车页面”选项,则此钩子有效。
现在,WooCommerce中有2种添加到购物车:
该挂钩woocommerce_add_to_cart_redirect
仅适用于普通添加到购物车以定位特定产品,因为您无法使用Ajax添加到购物车进行重定向来处理产品ID (请参阅下文)。
对于Ajax添加到购物车 ,钩子的定义如下:
'cart_url' => apply_filters( 'woocommerce_add_to_cart_redirect', wc_get_cart_url(), null ),
其中第二个参数设置为null
。
对于“普通添加到购物车” ,挂钩在此处定义如下:
$url = apply_filters( 'woocommerce_add_to_cart_redirect', $url, $adding_to_cart );
其中$adding_to_cart
(第二个参数)是此处定义的产品对象,例如:
$adding_to_cart = wc_get_product( $product_id );
这是正常添加到购物车中处理特定产品ID自定义重定向的正常工作代码的正确示例:
add_filter( 'woocommerce_add_to_cart_redirect', 'custom_add_to_cart_redirect', 10, 2 );
function custom_add_to_cart_redirect( $redirect_url, $product ) {
$product_ids = array( 37, 22, 53, 40 ); // Here set your product Ids in the array
// Only redirect the product IDs in the array to the checkout
if ( is_object($product) && in_array( $product->get_id(), $product_ids ) ) {
$redirect_url = wc_get_checkout_url();
}
return $redirect_url;
}
代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常添加到购物车。
为了处理Ajax,将购物车重定向到特定产品的自定义网址,需要一些jQuery代码…
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句