web-dev-qa-db-fra.com

Interroger un message depuis un réseau multisite

Je travaille sur un réseau de blogs multisites où je dois afficher les publications récentes sur ma page d'accueil, 10 publications par navigation.

Je l'ai implémenté en utilisant l'objet wpdb avec une instruction SQL complexe.

  • J'ai eu les identifiants de blog avec la fonction get_blog_list
  • en boucle dans chaque liste d'identifiants de blog et généré une seule requête SQL pour recevoir des publications de tous les sites
  • wpdb->get_result utilisé pour obtenir la liste des publications de tous les sous-sites

J'ai récemment commencé à travailler sur PHP et WordPress et je l'apprends toujours.

Est-ce que l'utilisation de l'objet wpdb est la bonne manière dans cette situation? J'ai lu dans de nombreux articles qui utilisent l'objet WP_Query. Je ne sais pas comment utiliser l'objet WP_Query dans cette situation?

Aidez-moi à mettre cela en œuvre de manière juste/meilleure.

4
vishal

Vous pouvez utiliser votre liste d'identifiants de blog de cette façon ...

$posts = array();
foreach ( $your_list_of_blog_ids as $blog_id ) {
    switch_to_blog( $blog_id );
    $query = new WP_Query(
        array(
            'post_type' => 'any',
            'posts_per_page' => 10,
        )
    );
    while ( $query->have_posts() ) {
        $query->next_post();
        $posts[] = $query->post;
    }
    restore_current_blog();
}

Les points importants sont switch_to_blog et restore_current_blog . Le reste du code est juste là pour illustrer l'idée.

4
realloc