Получение записей по роли пользователя в мультисайте

23 февр. 2018 г., 08:27:52
Просмотры: 118
Голосов: 0

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

Пример пользователей:
Сайт A - пользователи (администратор сайта A, редактор сайта A)
Сайт B - пользователи (редактор сайта B)
Сайт C - пользователи (редактор сайта C)

Сайт A - список записей

  • Запись администратора сайта A
  • Запись редактора сайта A

Сайт B - список записей

  • запись администратора сайта A
  • запись редактора сайта B

Сайт C - список записей

  • запись администратора сайта A
  • запись редактора сайта C
1
Комментарии

Вы тестировали мой код с множественными условиями? И добавьте restore_current_blog() в конце

Ravi Patel Ravi Patel
23 февр. 2018 г. 10:31:56
Все ответы на вопрос 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();
23 февр. 2018 г. 08:46:32
Комментарии

Он показывает только пост администратора, а switch_to_blog должен быть динамическим

jack jack
23 февр. 2018 г. 08:54:05

да, нужно добавить больше кода в соответствии с вашими условиями. измените роль и ID сайта, которые вам нужны.

Ravi Patel Ravi Patel
23 февр. 2018 г. 10:03:08
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' ) );

}
23 февр. 2018 г. 13:30:04