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

ai testat codul meu cu mai multe condiții? și ai adăugat restore_current_blog() la final

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

Acesta afișează doar postarea administratorului și switch_to_blog ar trebui să fie dinamic

jack jack
23 feb. 2018 08:54:05

da, este nevoie să adaugi mai mult cod conform condițiilor tale. schimbă rolul și ID-ul site-ului pe care îl dorești.

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

}
23 feb. 2018 13:30:04