Wordpress验证用户管理区域中的Billing_Phone

问题描述 投票:0回答:2

我目前具有wordpress / woocommerce和billing_phone验证功能(在下面提供),该功能可在“我的帐户--帐户详细信息”,“结帐”等范围内使用。此功能首先检查该值是否为有效的电话号码,然后检查该值是否有效。电话号码已经存在。这是我插件中非常重要的功能,因为我无法承担重复的费用。

我需要与后端中的前端相同的检查/余额...我遇到问题的地方是找到最合适的挂钩或挂钩组,以使我能够在管理区域内验证billing_phone字段,并1)使用您通常会在管理员后端看到的错误消息来显示错误,以及2)不更新该字段并显示错误。

我已经尝试过user_profile_update_errors-遗憾的是,它仅在更新了元数据之后才提供错误,并且我找不到有关如何在$error变量中包含检查的任何信息。我也尝试了edit_user_profile_updateshow_user_profile,但我不知道如何向以下函数添加错误。

function user_admin_validate_billing_phone() {

    if ( isset( $_POST['billing_phone'] ) && !empty( $_POST['billing_phone'] ) ) { 

        if ( !preg_match('/^04[0-9]{8}$/D', str_replace(' ', '', $_POST['billing_phone'] ) ) ) {

        //  Error: Billing Phone Number is Invalid.

        }

        $existing_billing_phone = get_users( 'meta_value=' . str_replace(' ', '', $_POST['billing_phone'] ) );

        $current_user = wp_get_current_user();

        if ( !empty( $existing_billing_phone ) ) {

            if ( $current_user->billing_phone != str_replace(' ', '', $_POST['billing_phone'] ) ) {

            // Error: Billing Phone Number Already Exists.

            }
            else { 
                return;
            }
        }
    }
}

如上所述,我尝试了以下挂钩:

add_action( 'show_user_profile', 'user_admin_validate_billing_phone', 90 );
add_action( 'edit_user_profile', 'user_admin_validate_billing_phone', 90 );
add_action( 'personal_options_update', 'user_admin_validate_billing_phone' );
add_action( 'edit_user_profile_update', 'user_admin_validate_billing_phone' );
add_action( 'user_profile_update_errors, 'user_admin_validate_billing_phone', 10, 3 );

...但是无论是出现错误还是字段仍在更改,或者我不知道如何进行适当的错误处理,例如:

$error = new WP_Error();
$error->add( 'error', __( 'Billing Mobile Phone Number already exists.' ) );

任何帮助或对正确过程的指导,将不胜感激。

wordpress woocommerce admin backend
2个回答
0
投票
使用此代码。

0
投票
示例
© www.soinside.com 2019 - 2024. All rights reserved.