Ottenere post per ruolo utente in un Multisite
23 feb 2018, 08:27:52
Visualizzazioni: 118
Voti: 0
Attualmente riesco a ottenere i post solo per ruoli utente su siti specifici. Ciò di cui ho bisogno è una query che possa recuperare i post in base al ruolo utente anche da altri siti.
Esempio Utenti:
Sito A - utente(amministratore sito a, editor sito a)
Sito B - utente(editor sito b)
Sito C - utente(editor sito c)
Sito A - elenco indicizzato di post
- Post dall'amministratore sito A
- Post dall'editor sito A
Sito B - elenco indicizzato di post
- post dall'amministratore sito A
- post dall'editor Sito B.
Sito C - elenco indicizzato di post
- post dall'amministratore sito A
- post dall'editor Sito C.

jack
3
Commenti
Tutte le risposte alla domanda
2
2
global $switched;
switch_to_blog(2); //passa all'ID del sito specifico da cui recuperare i post
$administrators = get_users( array( 'role' => 'administrator' ) ); // puoi aggiungere altri ruoli nella stessa query separandoli con ","
$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();
//aggiungi qui il tuo codice
endwhile;
endif;
wp_reset_postdata();
restore_current_blog();

Ravi Patel
538
23 feb 2018 08:46:32
0
Prova questo:
//post degli amministratori dal sito principale:
switch_to_blog(get_main_site_id());
$admin_posts = get_posts_by_user_roles(array('role'=>'administrator'));
restore_current_blog();
//post degli editor dal blog corrente
$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 "Nessun utente trovato";//stampa solo per debug
return FALSE;
}
return get_posts( array('author' => implode(',', $users), 'post_type' => 'post' ) );
}

Faiyaz Alam
199
23 feb 2018 13:30:04
Domande correlate
2
risposte