Obține postări după rolul utilizatorului într-un site Multisite
23 feb. 2018, 08:27:52
Vizualizări: 118
Voturi: 0
În prezent, pot obține postările doar după rolurile utilizatorilor pe site-uri specifice. Am nevoie de o interogare care să obțină postările de la utilizatorii cu un anumit rol de pe alte site-uri.
Exemplu Utilizatori:
Site A - utilizator(admin site a, editor site a)
Site B - utilizator(editor site b)
Site C - utilizator(editor site c)
Site A - listă indexată de postări
- Postare de admin site A
- Postare de editor site A
Site B - listă indexată de postări
- postare de admin site A
- postare de editor Site B.
Site C - listă indexată de postări
- postare de admin site A
- postare de editor Site C.

jack
3
Comentarii
Toate răspunsurile la întrebare
2
2
global $switched;
switch_to_blog(2); //comută la ID-ul site-ului tău în funcție de ce postare este necesară.
$administrators = get_users( array( 'role' => 'administrator' ) ); // poți adăuga mai multe roluri în aceeași interogare, separate prin ",".
$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();
//adaugă cod aici
endwhile;
endif;
wp_reset_postdata();
restore_current_blog();

Ravi Patel
538
23 feb. 2018 08:46:32
0
Încearcă asta:
//postări de administrator de pe site-ul principal:
switch_to_blog(get_main_site_id());
$admin_posts = get_posts_by_user_roles(array('role'=>'administrator'));
restore_current_blog();
//postări de editor de pe blogul curent
$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 "Nu s-au găsit utilizatori";//afișează doar în scop de depanare
return FALSE;
}
return get_posts( array('author' => implode(',', $users), 'post_type' => 'post' ) );
}

Faiyaz Alam
199
23 feb. 2018 13:30:04
Întrebări similare
3
răspunsuri
2
răspunsuri
3
răspunsuri