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.
1
Commenti

hai testato il mio codice con più condizioni. & aggiungi restore_current_blog() alla fine

Ravi Patel Ravi Patel
23 feb 2018 10:31:56
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();
23 feb 2018 08:46:32
Commenti

Mostra solo il post dell'amministratore e lo switch_to_blog dovrebbe essere dinamico

jack jack
23 feb 2018 08:54:05

sì, è necessario aggiungere altro codice in base alle tue condizioni. modifica il ruolo e l'ID del sito che desideri.

Ravi Patel Ravi Patel
23 feb 2018 10:03:08
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' ) );

}
23 feb 2018 13:30:04