在WordPress中按文本字段分配用户角色(WooCommerce)

时间:2021-01-05 作者:Lucas Catani

我在woocommerce有一个虚拟商店,在那里我使用用户注册插件注册新客户。此插件允许创建自定义字段。我创建了一个名为“的自定义文本字段”;国家注册;。在该字段中,用户可以写入内容或将其留空。

我的要求是,在创建新用户时,wordpress将阅读以下内容;国家注册”;字段,查看其中是否填充了任何内容。

如果您填写了一些内容,我需要用户再填写一次;“角色”;添加到他们的个人资料中。

我以前创建过这个角色,它叫做;即;。

我想试试这个,但不管用!

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 );
    }
}

enter image description here

1 个回复
最合适的回答,由SO网友:Lucas Catani 整理而成

Here is the code:

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 );
}
}

相关推荐

Row actions not showing? Why?

我建造了一个WP_List_Table 显示在我构建的自定义主题页面上。尽管我查看了Internet上关于WP\\U List\\U表格的所有可能信息,但在显示行操作时遇到了一些问题。任何帮助都会很好!class Testimonials_List_Table extends WP_List_Table { function __construct() { parent::__construct( array( \'singular\'=> \'te