WordPress e le sitemap multiple

Un articolo di oggi su PorSEO consiglia l’utilizzo di sitemap multiple, a quanto pare i benefici in termini di “visibilità” su Google sembrano proprio esserci. Ma come fare se usiamo WordPress?

Le strade sono due:

  • o ci si accontenta di mappare i singoli RSS delle categorie, con un numero di articoli limitato, in base a come l’avete impostato in “Impostazioni > Lettura”
  • o si possono creare delle query in mySql, esportarle e rielaborarle, e salvare come sitemap o liste di url
  • o fare una paginetta in php che lo fa però voi.

Ora vi propongo le query per ottenere i dati di archivi storici e categorie, ed una pagina demo che ho fatto per l’archivio annuale.

La query per estrarre un archivio annuale è decisamente semplice, nell’esempio ho impostato gli ultimi 1000 articoli dell’anno 2008. Importante è nel concat() inserire il path completo prima del “permalink”:

--Il PathSito deve terminare con /
SELECT CONCAT(CONCAT('http://PathSito/' , post_name ),'/') AS link
FROM `wpmrx_posts`
WHERE post_status = 'publish'
AND YEAR( post_modified ) = 2008
AND post_type = 'post'
ORDER BY wpmrx_posts.post_modified DESC
LIMIT 0 , 1000

Un po’ più complicata la query per estrarre tutti gli articolo di una certa categoria, ma è solo questione di sql, alla fine non vi resta che modificare il path (come sopra) e l’id della categoria che volete estrarre. In questo esempio ho messo la 2812:

--Il PathSito deve terminare con /
SELECT CONCAT(CONCAT('http://PathSito/' , post_name ),'/') AS link
FROM wpmrx_posts
INNER JOIN wpmrx_term_relationships ON wpmrx_posts.id = wpmrx_term_relationships.object_id
INNER JOIN wpmrx_term_taxonomy  ON wpmrx_term_relationships.term_taxonomy_id = wpmrx_term_taxonomy.term_taxonomy_id
WHERE wpmrx_term_taxonomy.taxonomy = 'category' AND wpmrx_term_taxonomy.term_id = 2182
ORDER BY wpmrx_posts.post_modified DESC
LIMIT 0 , 1000

Per finire questa è la pagina di esempio che ho usato associata alla query di archivio per anno, basta richiamarla con un bel ?year=2008 alla fine, per ottenere gli ultimi 1000 articoli del 2008. Penso non servano altre spiegazioni per dirvi come farla anche per le categorie, al massimo fate un fischio.

<?
header("Content-Type: text/plain");

if (isset($_GET['year'])){
	'recupero le info di db da wordpress
	require('wp-config.php');

	'imposto il path del blog
	$siteurl = 'http://PathDelVostroWP/';

	//creo connessione
	$conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
	$db = mysql_select_db(DB_NAME, $conn);

	$qrySelect = "SELECT CONCAT('" . $siteurl . "' , post_name ) AS link FROM  wpmrx_posts WHERE
					post_status =  'publish'
					AND YEAR( post_modified ) = " . $_GET['year'] . "
					AND post_type =  'post'
					ORDER BY wpmrx_posts.post_modified DESC
					LIMIT 0 , 1000";
	$rsSelect = mysql_query($qrySelect, $conn);

	//loop della query
	while ($row = mysql_fetch_assoc($rsSelect)) {
		echo $row['link'] . "\n";
	}
	mysql_close($conn);
}else{
	echo 'Please add the year param in querystring';
}
>

Se siete dei pigroni e non avete voglia di andarvi a pescare l’id delle categorie ecco la soluzione con lo slug delle categorie:

$qrySelect = "SELECT CONCAT(CONCAT('" . $siteurl . "' , post_name ),'/') AS link
					FROM wpmrx_posts
					INNER JOIN wpmrx_term_relationships ON wpmrx_posts.id = wpmrx_term_relationships.object_id
					INNER JOIN wpmrx_term_taxonomy  ON wpmrx_term_relationships.term_taxonomy_id = wpmrx_term_taxonomy.term_taxonomy_id
					INNER JOIN wpmrx_terms ON wpmrx_term_taxonomy.term_id = wpmrx_terms.term_id
					WHERE wpmrx_term_taxonomy.taxonomy = 'category' AND wpmrx_terms.slug = '" . $_GET['catSlug'] . "'
					ORDER BY wpmrx_posts.post_modified DESC
					LIMIT 0 , 1000";

Nota bene: che non vi venga la folle e stupida idea (mi permetto di dirlo perchè a me era venuta) di mettere la vostra paginetta di creazione di listMap in disallow nel robots.txt, perchè il risultato è un infinita serie di X sul report sitemap: le pagine devono essere visibili al motore.

Buone mappe a questo punto e – se vi va – condividete i risultati che condividere fa bene!

Loading Facebook Comments ...

2 pensieri su “WordPress e le sitemap multiple

  1. Pingback: Google: affidabilità report

Lascia un commento

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