Получение записей по роли пользователя в мультисайте
23 февр. 2018 г., 08:27:52
Просмотры: 118
Голосов: 0
Сейчас я могу получать записи по ролям пользователей только на конкретных сайтах. Мне нужен запрос, который будет получать записи по ролям пользователей с других сайтов.
Пример пользователей:
Сайт A - пользователи (администратор сайта A, редактор сайта A)
Сайт B - пользователи (редактор сайта B)
Сайт C - пользователи (редактор сайта C)
Сайт A - список записей
- Запись администратора сайта A
- Запись редактора сайта A
Сайт B - список записей
- запись администратора сайта A
- запись редактора сайта B
Сайт C - список записей
- запись администратора сайта A
- запись редактора сайта C

jack
3
Комментарии
Все ответы на вопрос
2
2
global $switched;
switch_to_blog(2); // переключение на ID вашего сайта, на котором нужны записи
$administrators = get_users( array( 'role' => 'administrator' ) ); // можно добавить другие роли в этот же запрос, перечислив их через запятую
$administrators_ids = array();
$original_blog_id = get_current_blog_id();
foreach( $administrators as $admin ):
$administrators_ids[] = $admin->ID;
$news = new WP_Query( array( 'author' => implode( ',', $administrators_ids ), 'post_type' => 'news', 'paged' => get_query_var('paged') ) );
endforeach;
if ( $news->have_posts() ) :
while ( $news->have_posts() ) : $news->the_post();
// добавьте ваш код здесь
endwhile;
endif;
wp_reset_postdata();
restore_current_blog();

Ravi Patel
538
23 февр. 2018 г. 08:46:32
0
Попробуйте этот код:
// Получаем посты администраторов с основного сайта:
switch_to_blog(get_main_site_id());
$admin_posts = get_posts_by_user_roles(array('role'=>'administrator'));
restore_current_blog();
// Получаем посты редакторов с текущего сайта
$editor_posts = get_posts_by_user_roles();
echo "<pre>";
print_r($admin_posts);
echo "<br>";
echo "<br>";
echo "<br>";
print_r($editor_posts);
exit;
function get_posts_by_user_roles($args = array()) {
$args = wp_parse_args( $args, array( 'role' => 'editor', 'fields'=>"ID" ) );
$users = get_users($args);
if(empty($users))
{
echo "Пользователи не найдены";// Вывод для отладки
return FALSE;
}
return get_posts( array('author' => implode(',', $users), 'post_type' => 'post' ) );
}

Faiyaz Alam
199
23 февр. 2018 г. 13:30:04
Похожие вопросы