Archived post from my old blog (2007–2016), restored from the Wayback Machine. It is published as written at the time, in Italian; tools and versions are likely out of date.

WordPress multisite, raccogliere i post da più blog

  • php
  • crossblog-posting
  • multisite
  • wordpress
  • wordpress-multisite
  • wordpress-network

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 🙂

← Archive