在woocommerce_add_to_cart之前执行一段代码

Execute a piece of code before woocommerce_add_to_cart

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

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

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

你应该如下使用 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
}

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

Check that the correct meta_key for your verified status in the code is '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 文件。

应该可以。