Php 在将添加到购物车之前执行一段代码

Php 在将添加到购物车之前执行一段代码,php,wordpress,woocommerce,product,hook-woocommerce,Php,Wordpress,Woocommerce,Product,Hook Woocommerce,客户注册后,管理员将验证其身份并激活该客户。为了维护客户验证状态,我在wp\u usermeta表中使用IsVerified作为1 现在,若客户将产品添加到他的购物车中,我想检查客户是否经过验证。如果验证,那么我只需要实际的购物车流程。如果客户未经验证,则我希望重定向他/她以上载指定的文档,购物车功能无需工作。如果没有登录,需要将他重定向到登录页面 我是woocommerce和wordpress的新手,所以如果有任何例子,都很容易理解 更新代码如下: add_action('woocommerc

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

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

我是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');
    }
}
add_action( 'action_name', 'your_function_name' );

function your_function_name() {
// Your code
}

您应按如下方式使用挂钩:

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');
    }
}
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\u add\u to\u cart\u validation
钩子来避免添加到购物车,并通过链接到特定验证页面的按钮显示自定义通知

检查代码中验证状态的正确
meta\u键是否为
'woo\u 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;
}
add_动作('woocommerce_add_to_cart_validation'、'custome_add_to_cart_validation',10,1);
函数custome\u add\u to\u cart\u验证($passed){
//当用户登录时,我们将获得其已验证状态
如果(用户是否已登录)
//获取用户“woo_VerifyStatus”后预测值
$verified_user=get_user_meta(get_current_user_id(),'woo_VerifyStatus',true);
//当用户未登录时,我们会避免添加到购物车并显示自定义消息
如果(!用户是否已登录()){
$message=_uuuu(“请,您需要注册和验证用户。”,“woocommerce”);
$button_text=uuuuuuuuuuuuuuuuuuuu(“登录或注册”,“woocommerce”);
$url=home_url('/gld/my account');
$message.='';
$passed=false;//设置为false
$message.='';
}
//当用户未经验证时,我们会避免添加到购物车并显示自定义消息
elseif($verified_user!=1){
$message=_uuuuuuuuuuuuuuuuuuu(“请,您需要是一个经过验证的用户。”,“woocommerce”);
$button_text=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
$url=home_url('/gld/my account');
$message.='';
$passed=false;//设置为false
}
如果(!$通过)
wc_添加_通知($message,'error');
返回$passed;
}
代码进入活动子主题(或活动主题)的function.php文件


它应该可以工作。

尝试使用过滤器
woocommerce\u add\u to\u cart\u product\u id
,该过滤器在此处定义:正如您所说,我已经更新了代码。你能检查一下吗。