当客户更新他们的名字时更新用户元

时间:2021-02-02 作者:Baim Whello

我想在客户更改名字时更新用户元。

这里是我的代码:

add_action( \'woocommerce_update_customer\', \'can_editable_account_count\' ); 
function can_editable_account_count( $customer_get_id ) {
    if ( ! is_account_page() && ! is_user_logged_in() ) {
       return;
    }
    
    update_user_meta($customer_get_id, \'can_editable_account\', \'0\');
}
但无论客户做了什么改变,都会运行。我只想在特定字段更改时运行。

1 个回复
SO网友:Buttered_Toast

这是一个棘手的问题。

要使用户元更新仅在名字更新时发生,您需要以下内容。

创建一个常数,该常数将包含当前用户名,检查当前用户名是否与配置文件更新时提交的用户名不同,为常数添加以下行。我建议在函数的顶部。php

define(\'USER_FIRST_NAME\', get_user_meta(get_current_user_id(), \'first_name\', true));
现在开始函数

function can_editable_account_count( $customer_get_id ) {
    if ( ! is_account_page() && ! is_user_logged_in() ) {
        return;
    }

    // check if user submited the edit account form and if the first name field exists and has value
    if (isset($_POST[\'account_first_name\']) && !empty($_POST[\'account_first_name\'])) {
        // check if the current user name is not equal to the submited user name
        if ($_POST[\'account_first_name\'] !== USER_FIRST_NAME) {
            update_user_meta($customer_get_id, \'can_editable_account\', \'0\');
        }
    }
}

相关推荐

添加用户角色:预先保存在User-Meta中[已解决]

我在用户注册后添加一个操作,以根据users meta\\u值添加另一个用户角色。使用时:add_action(\'um_after_save_registration_details\', \'custom_after_new_user_register\', 10, 2); function custom_after_new_user_register($user_id) { $user = get_user_by(\'id\', $user_id); if