我在产品页面上使用ACF,在产品添加到购物车后选择所需的重定向URL。这主要用于重定向到自定义追加销售页面。
示例:产品A的ACF字段“重定向URL”中填充了产品B。当产品A添加到购物车时,用户将重定向到产品B。
我的函数中有以下代码。php:
function acf_product_redirect( $url ) {
global $post;
if (get_field(\'redirect_url\', $post->ID)) {
$redirect_id = get_field(\'redirect_url\', $post->ID);
$url = get_permalink($redirect_id);
var_dump($url); // This $url var correctly displays my desired redirect URL
return $url;
}
}
add_filter( \'woocommerce_add_to_cart_redirect\', \'acf_product_redirect\' );
查看单个产品页面时,var\\u dump($url)会正确显示我在产品页面上设置的url。但是重定向实际上不起作用。
如果我将“return$url”行移到If语句之外,并将$url变量替换为静态url,那么重定向就会起作用。
所以,在我单击“添加到购物车”后,发生了一些事情。未传递$url变量。
最合适的回答,由SO网友:Chetan Vaghela 整理而成
尝试以下代码。我已经测试过了,对我来说效果很好。
add_filter( \'woocommerce_add_to_cart_redirect\', \'acf_product_redirect\' );
function acf_product_redirect() {
#Get product ID
if ( isset( $_REQUEST[\'add-to-cart\'] ) || is_numeric( $_REQUEST[\'add-to-cart\'] ) ) {
$product_id = (int) apply_filters( \'woocommerce_add_to_cart_product_id\', $_REQUEST[\'add-to-cart\'] );
# Check if redirect url set or not
if (!empty(get_field(\'redirect_url\', $product_id))) {
$redirect_id = get_field(\'redirect_url\', $product_id);
return get_permalink($redirect_id);
}
}
}
如果这对你有用,请告诉我。