WordPress: позвольте менеджеру магазина создавать пользователей с пользовательской ролью

#wordpress #woocommerce #hook-woocommerce

Вопрос:

Мне нужно позволить менеджерам магазинов моей электронной коммерции создавать пользователей с пользовательской ролью, созданной мной.

С помощью этого кода я могу добавить возможность для shop_manager добавлять пользователей, но проблема в том, что менеджер магазина может создать только пользователя с «клиентом», вместо этого я хотел бы позволить менеджеру магазина добавить пользовательскую роль, которую я ранее создал.

 function shop_manager_add_users() {
    $role = get_role( 'shop_manager' );
    $role->add_cap('create_users' );
}
add_action( 'admin_init', 'shop_manager_add_users');
 

Как я могу это решить?

Комментарии:

1. Просто обратите внимание, что Пользователю назначена Роль в Настройках > Общие >> Новая роль пользователя по умолчанию. Если это включает вашу роль по умолчанию, то ваш код работает для этого (но не для пользовательской роли и клиента). Очевидно, что будут некоторые соображения безопасности, иначе менеджер магазина мог бы создать администратора

2. Похоже, что вам нужна такая возможность promote_users , но, опять же, у вас будут соображения безопасности. Этот ответ может помочь; wordpress.stackexchange.com/questions/4479/…

Ответ №1:

 register_activation_hook( __FILE__, 'wpse42003_activation' );
function wpse42003_activation()
{
    foreach( array( 'editor', 'shop_manager' ) as $r )
    {
        $role = get_role( $r );
        if( $role )
            $role->add_cap( 'create_users' );
    }
}
 

Вы можете попробовать этот, который хорошо работал на моем сайте, но несколько лет назад

Комментарии:

1. спасибо, но этот код делает то же самое, что и я. Добавьте возможность создавать пользователей, но у меня возникает та же проблема, что и у меня: я могу создавать только клиентов

2. Прочтите вопрос!