Obtener publicaciones por rol de usuario en una red Multisitio

23 feb 2018, 08:27:52
Vistas: 118
Votos: 0

Actualmente, solo puedo obtener las publicaciones por roles de usuario en sitios específicos. Lo que necesito es una consulta que obtenga las publicaciones de usuarios según su rol en otros sitios.

Ejemplo de usuarios:
Sitio A - usuario(admin sitio a, editor sitio a)
Sitio B - usuario(editor sitio b)
Sitio C - usuario(editor sitio c)

Sitio A - lista índice de publicaciones

  • Publicación por admin sitio A
  • Publicación por editor sitio A

Sitio B - lista índice de publicaciones

  • Publicación por admin sitio A
  • Publicación por editor Sitio B.

Sitio C - lista índice de publicaciones

  • Publicación por admin sitio A
  • Publicación por editor Sitio C.
1
Comentarios

¿has probado mi código con múltiples condiciones? & añade restore_current_blog() al final

Ravi Patel Ravi Patel
23 feb 2018 10:31:56
Todas las respuestas a la pregunta 2
2
global $switched;
switch_to_blog(2); //cambia al ID de tu sitio basado en qué sitio necesita el post.

$administrators = get_users( array( 'role' => 'administrator' ) ); // puedes agregar más roles en la misma consulta separados por ",".
$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();

            //agrega código aquí

        endwhile; 

    endif;
wp_reset_postdata();
restore_current_blog();
23 feb 2018 08:46:32
Comentarios

Solo muestra la publicación del administrador y el switch_to_blog debería ser dinámico

jack jack
23 feb 2018 08:54:05

sí, necesitas agregar más código según tus condiciones. cambia el rol y el ID del sitio que desees.

Ravi Patel Ravi Patel
23 feb 2018 10:03:08
0

Prueba esto:

 //posts de administradores desde el sitio principal:
    switch_to_blog(get_main_site_id());
 $admin_posts =   get_posts_by_user_roles(array('role'=>'administrator'));
    restore_current_blog();

    //posts de editores desde el blog actual
 $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 "No se encontraron usuarios";//imprimir solo para propósitos de depuración
           return FALSE;
       }
       return get_posts( array('author' => implode(',', $users), 'post_type' => 'post' ) );

}
23 feb 2018 13:30:04