Nell’ambito del mio itinerario di upgrade a Wordpress MU, ho anche sperimentato una serie di plugin interessanti che possono semplificare la vita nella gestione di un sito. C’è da dire che, rispetto agli standard delle plugin di Wordpress “normale”, si trova molta meno documentazione in giro, e spesso si tratta di progetti individuali volti a risolvere uno o più problemi.
Una necessità rilevante nel mio progetto risultava essere la messa a disposizione di una sitemap utilizzabile da Google ed altri crowler per l’indicizzazione dei siti. Ho trovato una plugin molto interessante, Standard XML Sitemap Plugin, che funziona anche per wordpress standard.
Sostanzialmente la plugin funziona creando un flusso rss, che formatta dinamicamente creando un file xml compliant con gli standard sitemap. Pertanto, basta connettersi ad uno dei blog presenti sull’installazione, aggiungere “sitemap.xml” dopo il dominio, ed una sitemap viene generata immediatamente.
Veloce, facile, ottima. Purtroppo la plugin in questione, nel suo formato scaricato, aveva due problemi:
- Formattazione della data, non seguiva le spefiche, pertanto Google segnalava un errore.
- Limite di query: la query limitata a 100 posts, tronacav la sitemap appunto su un numero ridotto di post.
I due problemi sono però facilmente risolvibili, intervenendo sul codice sorgente del file feed-sitemap.php.
Ecco qui il file che potete copiare e sostituire rispetto all’originale:
<?php
/**
* XML Sitemap Feed Template for displaying XML Sitemap Posts feed.
*
* @package Blogates/Wordpress
*/
header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
$more = 1;
?>
<?php echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<!-- generator="Blogates.com/Bloggles" -->
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
>
<url><loc><?php bloginfo_rss('url') ?></loc>
<lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', get_lastpostmodified('GMT'), false); ?></lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
<?php
$post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT 1000");
if ($post_ids) {
global $wp_query;
$wp_query->in_the_loop = true;
while ( $next_posts = array_splice($post_ids, 0, 20) ) {
$where = "WHERE ID IN (".join(',', $next_posts).")";
$posts = $wpdb->get_results("SELECT * FROM $wpdb->posts $where ORDER BY post_date_gmt DESC");
foreach ($posts as $post) {
setup_postdata($post); ?>
<url><loc><?php the_permalink_rss() ?></loc>
<lastmod><?php echo mysql2date('Y-m-d\TH:i:s+00:00', get_post_time('Y-m-d H:i:s', true), false); ?></lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<?php } } } ?>
</urlset>
Gli interventi riguardavano essenzialmente la stringa ” Y-m-d\TH:i:s +0000 ” non corretta in quanto presente uno spazio prima del ” + ” e manca il divisore ” : ” tra le cifre finali. La versione corretta è questa:
Y-m-d\TH:i:s+00:00
Per quanto riguarda invece il secondo problema, è sufficiente impostare il limite della query, di standard impostato su 100 (” LIMIT 100 “), ad un valore più alto (lo ho portato a 1.000 in questo esempio).
Al momento pare funzionare!

Popularity: 59% [?]


December 2nd, 2008 at 4:53 pm
Ti segnalo che sul sito di wordpress-mu trovi una sezione premium.
Abbonandoti oltre al supporto dei loro esperti hai la possibilità di scaricare dei plugin premium per mu, otre a temi ed altro.
L’abbonamento minimo è per un mese di supporto e costa 50$… e francamente pensavo di farlo… visto che tra i plugin ci sono la google site map per MU, un seo plugin un mass mail sender, integrazioni con pay pall ecc..
comunque ottima anche la tua segnalazione, credo che la proverò
February 10th, 2009 at 4:08 am
[...] wordpress mu. Rimandiamo per questo discorso all’ottima guida che trovate su Teknè a questo url,spiega come modificare la Standard XML Sitemap in modo tale da essere compliant al 100%. Niente [...]