通过 Wordpress 中的文本字段内容分配用户角色
Assign user role by text field content in Wordpress
我有一个 woocommerce 虚拟商店,我在其中使用用户注册插件来注册新客户。此插件允许创建自定义字段。
我创建了一个名为“STATE REGISTRATION”的自定义文本字段。在此字段中,用户可以填写内容或留空。
我的需求是,在创建新用户的时候,wordpress会读取这个“STATE REGISTRATION”字段,看里面有没有填写的内容。
如果您需要填写一些内容,我需要用户在他们的个人资料中添加第二个“角色”。
我以前创建过这个角色,叫做“IE”。
我正在尝试这个,但不起作用!
add_action( 'user_registration_after_register_user_action', 'adiciona_role_ie', 9999, 3 );
function adiciona_role_ie( $valid_form_data, $form_id, $user_id ) {
$billing_ie = '';
if ( isset( $valid_form_data['billing_ie'] ) && ! empty( $valid_form_data['billing_ie']->value ) ) {
echo $billing_ie = $valid_form_data['billing_ie']->value;
}
if ( ! empty( $billing_ie ) ) {
add_filter('user_registration_after_register_user_action', 'wc_assign_custom_role', 10, 1);
function wc_assign_custom_role($args) {
$args['role'] = 'ie';
return $args;
}
//update_user_meta( $user_id, 'ie', $role );
}
}
首先,动物怎么点击(-)到问题?
其次,这里是解决方案。
function ur_update_role( $valid_form_data, $form_id, $user_id ) {
global $table_prefix;
$assign_roles_list = array();
if( isset( $valid_form_data['billing_ie']) && !empty( $valid_form_data['billing_ie']->value ) ) {
array_push( $assign_roles_list, 'ie' );
}
if ( ! empty( $assign_roles_list ) ) {
// Re-ordering roles according to priority.
$user_roles_list = ur_get_default_admin_roles();
foreach ( $user_roles_list as $key => $value ) {
if ( ! in_array( $key, $assign_roles_list, true ) ) {
unset( $user_roles_list[ $key ] );
} else {
$user_roles_list[ $key ] = true;
}
}
$field_name = $table_prefix . 'capabilities';
update_user_meta( $user_id, $field_name, $user_roles_list );
}
}
我有一个 woocommerce 虚拟商店,我在其中使用用户注册插件来注册新客户。此插件允许创建自定义字段。 我创建了一个名为“STATE REGISTRATION”的自定义文本字段。在此字段中,用户可以填写内容或留空。
我的需求是,在创建新用户的时候,wordpress会读取这个“STATE REGISTRATION”字段,看里面有没有填写的内容。
如果您需要填写一些内容,我需要用户在他们的个人资料中添加第二个“角色”。
我以前创建过这个角色,叫做“IE”。
我正在尝试这个,但不起作用!
add_action( 'user_registration_after_register_user_action', 'adiciona_role_ie', 9999, 3 );
function adiciona_role_ie( $valid_form_data, $form_id, $user_id ) {
$billing_ie = '';
if ( isset( $valid_form_data['billing_ie'] ) && ! empty( $valid_form_data['billing_ie']->value ) ) {
echo $billing_ie = $valid_form_data['billing_ie']->value;
}
if ( ! empty( $billing_ie ) ) {
add_filter('user_registration_after_register_user_action', 'wc_assign_custom_role', 10, 1);
function wc_assign_custom_role($args) {
$args['role'] = 'ie';
return $args;
}
//update_user_meta( $user_id, 'ie', $role );
}
}
首先,动物怎么点击(-)到问题?
其次,这里是解决方案。
function ur_update_role( $valid_form_data, $form_id, $user_id ) {
global $table_prefix;
$assign_roles_list = array();
if( isset( $valid_form_data['billing_ie']) && !empty( $valid_form_data['billing_ie']->value ) ) {
array_push( $assign_roles_list, 'ie' );
}
if ( ! empty( $assign_roles_list ) ) {
// Re-ordering roles according to priority.
$user_roles_list = ur_get_default_admin_roles();
foreach ( $user_roles_list as $key => $value ) {
if ( ! in_array( $key, $assign_roles_list, true ) ) {
unset( $user_roles_list[ $key ] );
} else {
$user_roles_list[ $key ] = true;
}
}
$field_name = $table_prefix . 'capabilities';
update_user_meta( $user_id, $field_name, $user_roles_list );
}
}