Как заставить всех пользователей использовать возможности роли автора?

Мне нужно получить список всех пользователей, которые являются авторами (с возможностями автора)

get_users позволяет извлекать пользователей с ролями, но если пользователи фильтруют роль автора, он пропускает пользователей с администратором роли и редактором (но они также могут создавать сообщения).

Поэтому мне нужен другой способ получить всех пользователей, имеющих возможности Author Role (они могут быть из Administator, Editor или любых других настраиваемых ролей с возможностью Authors)

Чтобы быть более точным – нужно, чтобы все пользователи имели возможность «publish_posts».

Вот способ сбора ролей с возможностями publish_posts :

 $roles__in = []; foreach( wp_roles()->roles as $role_slug => $role ) { if( ! empty( $role['capabilities']['publish_posts'] ) ) $roles__in[] = $role_slug; } 

и затем мы можем запросить пользователей с этими ролями:

 if( $roles__in ) $users = get_users( [ 'roles__in' => $roles__in, 'fields' => 'ids' ] ); 

где нам может понадобиться разбиение на страницы для большого количества пользователей.

Можно также зациклиться на нескольких пользователях и проверить:

 user_can( $user, 'publish_posts' ) 

См. Документы здесь .

В принципе, есть три роли, которые имеют право публиковать пост – «Администратор», «Редактор» и «Автор», если вы не добавляете какие-либо настраиваемые роли.

Таким образом, вы можете указать массив из этих 3 в вашей функции get_users. Что-то вроде этого:

 get_users( array( 'role__in' => array('administrator', 'editor', 'author'), ) ); 

Это даст вам данные пользователя с этими ролями в массиве, которые вы можете использовать в качестве удобства.

Надеюсь это поможет.

благодаря

Используйте get_role() для получения возможностей от любой роли пользователя в вашем коде.