Come Creare Automaticamente Post WordPress Senza Aggregatore

Pubblicato da Davide Tommasin

Come popolare di post un WordPress completamente vuoto? E’ stata una richiesta (indiretta) fattami recentemente da un Cliente.

Riformulo meglio la richiesta per far capire il problema che mi si è posto.

Problema

Il Cliente aveva quasi due migliaia di foto che voleva ripubblicare in maniera da avere:

  • i post dovevano essere inglobati in una data categoria;
  • 1 post al giorno;
  • 5 foto per post;
  • titolo uguale per tutti i post con  l’ agginta del numero sequenziale di ogni post;
  • contenuto testual standard per ogni post;
  • i post devono essere programmati e iniziati a pubblicare da una certa data (a partire da gg/mm/AAAA);

Soluzione creativa

Mi è venuto in soccorso la funzionalità Importa di WordPress (Strumenti -> Importa)

Prima di tutto mi sono “procurato” un modello su cui creare il nuovo Feed da importare e quindi ho utilizzato la funzione Esporta da un blog già attivo ed ho trovato la struttura su cui creare ed implementare i contenuti automaticamente creati con il codice php seguente.

Ho creato un file php che dato i seguenti valori alle relative variabili:

  • url del blog alla variabile $url;
  • numero di foto alla variabile $fototot;
  • data di inizio pubblicazione alla variabile $startdate;
  • url dell’ archivio immagini alla variabile $dirimg;

…quando lancio lo script, alla fine dello stesso c’è il comando che vada a scrivere il tutto su un file chiamato autoxml.xml

NOTA: leggere attentamente ANCHE le annotazioni all’ interno del file php.

(mi serviva una soluzione veloce e pratica quindi lo script seguente è altamente grezzo e migliorabile ma la sua sporca funzione l’ ha fatta – esempio di implementazione utile: aggiunta delle variabili globali come per il “titolo del blog” o quello della “categoria”… che nel seguente codice bisognerà editare manualmente su varie parti dello script)

Visto lo script “altamente primitivo” non mi assumo nessuna responsabilità sull’ uso improprio o eventuali provblemi dati dallo stesso.


<?php
//Global var

 $url = "www.mio-dominio.com/blog"; // non va aggiunto lo slash in ultimo
 $startdate = strtotime("20-05-2010"); // la data è nel formato giorno-mese-anno
 $fototot = 1500; // questo è la quantità di foto totale da pubblicare - ci pensa lo script a suddividerli in tot post
 $dirimg = "http://www.mio-dominio.com/wp-content/galleria/foto-"; // il path + il prefisso del nome delle singole foto - le singole foto dovranno essere nominate come foto-0000.jpg

 echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>

<!-- generator="WordPress/2.9.2" created="2010-05-12 13:54"-->
<rss version="2.0"
 xmlns:excerpt="http://wordpress.org/export/1.0/excerpt/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:wfw="http://wellformedweb.org/CommentAPI/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:wp="http://wordpress.org/export/1.0/"
>

<channel>
 <title>Titolo del tuo blog</title>
 <link>http://<?php echo $url; ?></link>
 <description>Qui viene segnalato la descrizione del blog</description>
 <pubDate>Tue, 11 May 2010 19:44:20 +0000</pubDate>
 <generator>http://wordpress.org/?v=2.9.2</generator>
 <language>en</language>
 <wp:wxr_version>1.0</wp:wxr_version>
 <wp:base_site_url>http://<?php echo $url; ?></wp:base_site_url>
 <wp:base_blog_url>http://<?php echo $url; ?></wp:base_blog_url>
 <wp:category><wp:category_nicename>archivio-foto</wp:category_nicename><wp:category_parent></wp:category_parent><wp:cat_name><![CDATA[Archivio foto]]></wp:cat_name></wp:category>

<?php
 $conta = 0;
?>

<item>
 <title>Foto che sto pubblicando oggi - puntata n° 0</title>
 <link>http://<?php echo $url ."/?p=". (15000); ?></link>
 <pubDate><?php echo (date('D, d M Y', ($startdate))); ?> 11:00:00 +0000</pubDate>
 <dc:creator><![CDATA[Davide Tommasin]]></dc:creator>
 <category><![CDATA[Archivio foto]]></category>
 <category domain="category" nicename="archivio-foto"><![CDATA[Archivio foto]]></category>

 <guid isPermaLink="false">http://<?php echo $url ."/?p=". (15000); ?></guid>
 <description></description>
 <content:encoded>

 Ecco le <b>5 foto</b> di oggi: (qui potresti pensare di inserire tranquillamente codice html senza problemi)

<?php
 for ($num=0; $num<$fototot; $num++)
 {
 if ($conta == 5) // questo numero dividerà il valore della variabile fototot e quindi si saprà quanti post verranno creati
 {
 $giorno++;
?>
 </content:encoded>
 <excerpt:encoded></excerpt:encoded>
 <wp:post_id><?php echo  (15000+$giorno-1); ?></wp:post_id>

 <wp:post_date><?php echo (date('Y-m-d', ($startdate+86400*$giorno-1))); ?> 11:00:06</wp:post_date>
 <wp:post_date_gmt><?php echo (date('Y-m-d', ($startdate+86400*$giorno-1))); ?> 10:00:06</wp:post_date_gmt>
 <wp:comment_status>open</wp:comment_status>
 <wp:ping_status>open</wp:ping_status>
 <wp:post_name>Foto che sto pubblicando oggi - <?php echo ($giorno-1); ?></wp:post_name>
 <wp:status>publish</wp:status>
 <wp:post_parent>0</wp:post_parent>
 <wp:menu_order>0</wp:menu_order>
 <wp:post_type>post</wp:post_type>
 <wp:post_password/>
 <wp:is_sticky>0</wp:is_sticky>

 <wp:postmeta>
 <wp:meta_key>_edit_last</wp:meta_key>
 <wp:meta_value>1</wp:meta_value>
 </wp:postmeta>
</item>

<item>
 <title>Foto che sto pubblicando oggi - <?php echo $giorno; ?></title>
 <link>http://<?php echo $url ."/?p=". (15000+$giorno); ?></link>
 <pubDate><?php echo (date('D, d M Y', ($startdate+86400*$giorno))); ?> 11:00:00 +0000</pubDate>
 <dc:creator><![CDATA[Davide Tommasin]]></dc:creator>
 <category><![CDATA[Archivio foto]]></category>
 <category domain="category" nicename="archivio-foto"><![CDATA[Archivio foto]]></category>
 <guid isPermaLink="false">http://<?php echo $url ."/?p=". (15000+$giorno); ?></guid>
 <description></description>
 <content:encoded>
<pre> Ecco le <b>5 foto</b> di oggi: (qui potresti pensare di inserire tranquillamente codice html senza problemi)</pre>
<?php
 $conta = 0;
 }

 ($num+1);
?>

 <a href="<?php echo $dirimg; if ($num<10) echo ('000'); elseif ($num<100) echo ('00'); elseif ($num<1000) echo ('0'); echo $num; ?>.jpg" title="Foto di Davide Tommasin">
 <img src="<?php echo $dirimg; if ($num<10) echo ('000'); elseif ($num<100) echo ('00'); elseif ($num<1000) echo ('0'); echo $num; ?>.jpg" alt ="Foto di Davide Tommasin" />
 </a>
<?php
 $conta++;
 }
?>
 </content:encoded>
 <excerpt:encoded></excerpt:encoded>
 <wp:post_id>15299</wp:post_id>

 <wp:post_date>2011-03-07 11:00:06</wp:post_date>
 <wp:post_date_gmt>2011-03-07 10:00:06</wp:post_date_gmt>
 <wp:comment_status>open</wp:comment_status>
 <wp:ping_status>open</wp:ping_status>
 <wp:post_name>Foto pubblicate oggi</wp:post_name>
 <wp:status>publish</wp:status>
 <wp:post_parent>0</wp:post_parent>
 <wp:menu_order>0</wp:menu_order>
 <wp:post_type>post</wp:post_type>
 <wp:post_password/>
 <wp:is_sticky>0</wp:is_sticky>

 <wp:postmeta>
 <wp:meta_key>_edit_last</wp:meta_key>
 <wp:meta_value>1</wp:meta_value>
 </wp:postmeta>
</item>

</channel>
</rss>

<?php
 // popolo la var autoxml.xml con il loop
 $myFile = "autoxml.xml";
 $fh = fopen($myFile, 'a');
 fwrite($fh, $somecontent);
?>

Pubblicato in Tutorial & How To
blog comments powered by Disqus

Twitter

Seguici Themes Free e PRO

@KING_Hack Template Free e PRO per WordPress

Newsletter CMS Italia

Your email:

 

Servizi Web e Hosting SEO

Hai bisogno di consulenza e supporto per personalizzare un template per WordPress? Puoi contattarci per chiederci consulenza sul web design.

hosting

Hai bisogno di Hosting? Possiamo offrirti spazio e servizi web per WordPress.