WordPress multisite, raccogliere i post da più blog

aprile 14, 2011
By

Dalla versione 3 di wordpress esiste la possibilità di gestire in maniera nativa vari siti, mettendo di fatto a disposizione un sistema per creare portali con facilità

Ogni sotto sito va a creare le proprie tabelle all’interno del database, modificando il prefix

Il codice che segue è un semplice snippet che permette di recuperare i post di tutti i sottositi da un qualsiasi punto arbitrario

if(isset($blog_id) && $blog_id != 1){
 $tmpPosts = Array();
 $blogsToQuery = Array(2,3); <== qui è hardcoded per fretta, da sostituire con un config
 
 foreach($blogsToQuery as $v){
 if($v != $blog_id){
 $wpdb->blogid = $v;
 $wpdb->prefix = "wp_$v"; <== il suffisso va scelto quando si installa, il vostro può essere diverso
 }
 $args = array(
 'post_type' => 'post',
 'blog_id' => $v
 );
 
 $cross_blog_query = $wpdb->get_results("SELECT ID, post_title, guid FROM wp_".$v."_posts WHERE post_status = 'publish' ");                
 $tmpPosts = array_merge($tmpPosts,$cross_blog_query);
 
 }
 
 foreach ($tmpPosts as $c => $v){
 $htmlout= '<div>
 <a href="'.$v->guid.' title="'.htmlentities($v->post_title).'">Continua a leggere &lsquo;'.$v->post_title.'&rsquo;</a>
 <div>'.$v->post_title.'</div><div>CODICE CORSO</div></div> ';
 echo $htmlout;
 }
 }

Ecco fatto 🙂

Tags: , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


*