Wordpress: изменение роли пользователя условно - PullRequest
3 голосов
/ 07 февраля 2012

Я создаю веб-сайт Wordpress для нескольких авторов и хочу установить роль пользователя в соответствии со статьей. Означает, что если у любого пользователя есть статья 0-10, он перейдет к роли Автор, если 11-30 перейдет к роли Автор, если 31-100 перейдет к роли Редактор.

Также я хочу сделать систему регистрации, в которой по умолчанию группа регистрации будет подписчиком. Они получат ссылку на письмо с подтверждением, например

Если вы хотите стать Автором, пожалуйста, нажмите на ссылку ниже. (Для отправки статьи у вас должно быть как минимум разрешение автора) http: // ссылка будет здесь ... эта ссылка автоматически меняет роль пользователя с подписчика на участника.

Надеюсь, я получу решение от вашего эксперта. Я публикую эту проблему с большой надеждой от вас, друзья.

Ответы [ 2 ]

7 голосов
/ 07 февраля 2012

То, что вы хотите сделать, это когда они публикуют свою проверку отправки, чтобы увидеть, сколько постов они создали, а затем изменить роль. Так что в файле functions.php вашей темы вам понадобится такой хук.

add_action('publish_post', 'update_roles');

и затем функция для обновления ролей.

function update_roles()
{

   global $wpdb;

   // Get the author
   $author = wp_get_current_user();

   // Not sure if $author and $u are the same object I suspect they are. 
   // so this may not be necessary, but I found this code elsewhere.
   // You may be able to do without this and just replace $u with $author later in the code.
   // Get post by author
   $posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_author = " . $author->ID );

   $numPost = count($posts);

   // Do the checks to see if they have the roles and if not update them.
   if($numPost > 0 && $numposts <= 10 && current_user_can('subscriber'))
   {
       // Remove role
       $author->remove_role( 'subscriber' );

       // Add role
       $author->add_role( 'contributor' );

   }

   ...... other conditions .......

}
0 голосов
/ 29 июня 2013

Использование операторов SQL (запросов к базе данных) для получения данных Wordpress не соответствует стандартам кодирования Wordpress. См. Wordpress Handbook

Было бы лучше использовать функцию count_user_posts

См. Функцию по кодексу

...