首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在woocommerce_add_to_cart之前执行一段代码

在woocommerce_add_to_cart之前执行一段代码
EN

Stack Overflow用户
提问于 2018-01-28 18:04:14
回答 2查看 1.5K关注 0票数 4

客户注册后,管理员将核实他的身份并激活该客户。为了维护客户验证状态,我在1表中使用IsVerified作为wp_usermeta

现在,如果客户将产品添加到他的购物车中,我想检查一下客户是否经过了验证。如果得到验证,那么只有我需要实际的手推车过程。如果客户没有被验证,那么我想重定向他/她上传指定的文档和购物车的功能,不需要工作。如果没有登录,需要将他重定向到登录页面。

我是woocommerce和wordpress的新手,所以如果有任何例子的话,这是很容易理解的。

经修订的守则如下:

代码语言:javascript
运行
复制
add_action('woocommerce_add_to_cart', 'custome_add_to_cart');
function custome_add_to_cart() {
    $userId=get_current_user_id();
    if($userId>0) {
        $UserROW = get_user_meta($userId);
        if( $UserROW['woo_VerifyStatus'][0] == 0 ) {
            wp_redirect( get_home_url().'/gld/my-account');
        } else {
            //Normal cart functionality
        }
    } else {
        wp_redirect( get_home_url().'/gld/my-account');
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-28 20:49:49

在添加到购物车之前不可能以简单的方式进行重定向,但是您可以使用woocommerce_add_to_cart_validation钩子来避免添加到购物车,并使用链接按钮显示自定义通知到您的特定验证页面。

检查代码中验证状态的正确meta_key是否为meta_key

守则:

代码语言:javascript
运行
复制
add_action( 'woocommerce_add_to_cart_validation', 'custome_add_to_cart_validation', 10, 1 );
function custome_add_to_cart_validation( $passed ){
    // When user is logged in in we get his verified status
    if( is_user_logged_in() )
        // Get user 'woo_VerifyStatus' postmeta value
        $verified_user = get_user_meta( get_current_user_id(), 'woo_VerifyStatus', true );

    // When user is not logged in we avoid add to cart and display a custom message
    if( ! is_user_logged_in() ){
        $message = __( "Please, you need to be registered and a verified user.", "woocommerce" );
        $button_text = __("Login or register", "woocommerce");
        $url = home_url('/gld/my-account');
        $message .= ' <a href="'.$url.'" class="login-register button" style="float:right;">'.$button_text.'</a>';
        $passed = false; // Set to false

        $message .= ' <a href="#" class="login-register button" style="float:right;">'.$button_text.'</a>';
    }

    // When is not a verified user we avoid add to cart and display a custom message
    elseif( $verified_user != 1 ) {
        $message = __( "Please, you need to be a verified user.", "woocommerce" );
        $button_text = __("proceed", "woocommerce");
        $url = home_url('/gld/my-account');
        $message .= ' <a href="'.$url.'" class="login-register button" style="float:right;">'.$button_text.'</a>';
        $passed = false; // Set to false
    }
    if( ! $passed )
        wc_add_notice( $message, 'error' );

    return $passed;
}

代码在您的活动子主题(或活动主题)的function.php文件中。

应该管用的。

票数 2
EN

Stack Overflow用户

发布于 2018-01-28 18:28:57

应该使用Hook,如下所示:

代码语言:javascript
运行
复制
add_action( 'action_name', 'your_function_name' );

function your_function_name() {
// Your code
}

例如,对于您的问题,您应该使用与下面相同的代码:

代码语言:javascript
运行
复制
add_action('woocommerce_add_to_cart', 'custome_add_to_cart');
function custome_add_to_cart() {
// Your code
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48489646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档