在woocommerce_add_to_cart之前执行一段代码

时间:2018-01-28 18:04:15

标签: php wordpress woocommerce product hook-woocommerce

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

现在,如果客户将产品添加到购物车,我想检查客户是否已经过验证。如果验证,那么我只需要实际的购物车流程。如果客户未经过验证,那么我想重定向他/她上传指定的文件,购物车功能无需工作。如果没有登录,需要将他重定向到登录页面。

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

更新后的代码如下:

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');
    }
}

2 个答案:

答案 0 :(得分:1)

你应该使用Hook如下:

add_action( 'action_name', 'your_function_name' );

function your_function_name() {
// Your code
}

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

add_action('woocommerce_add_to_cart', 'custome_add_to_cart');
function custome_add_to_cart() {
// Your code
}

答案 1 :(得分:1)

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

  

检查代码中验证状态的meta_key是否为 'woo_VerifyStatus'

代码:

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文件。

它应该有用。