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.

jack
3
Comentarios
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();

Ravi Patel
538
23 feb 2018 08:46:32
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' ) );
}

Faiyaz Alam
199
23 feb 2018 13:30:04
Preguntas relacionadas
3
respuestas
2
respuestas