WooCommerce和ACF:如何在添加到购物车时重定向-部分工作示例

时间:2019-10-14 作者:Joseph Farruggio

我在产品页面上使用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变量。

1 个回复
最合适的回答,由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);
        }   
    }
}
如果这对你有用,请告诉我。

相关推荐

Wp redirect - reset password

我卡住了。我正在从approve post功能重定向到建立密码的链接。这是可行的,但不需要用户。也就是说,打开重置密码页面,但我看到的错误是没有指定用户。我是否调用了错误的变量?提前谢谢。 add_action(\'init\', \'approve_post\', 10, 2 ); add_action(\'edit_user_created_user\', \'approve_post\', 10, 2 ); function approve_post($use