WordPress aggiornamento automatico della data di modifica di un post

Questo mio sito personale basato su Worpress lo uso per gli scopi sperimentali più disparati. Lo scorso anno ho implementato la pagina delle previsioni meteo per Bolzano e Alto Adige del servizio metereologico provinciale utilizzando uno script scritto ad hoc in php che legge il feed xml messo a disposizione dal servizio meteo e un plugin di Worpress che permette l’inclusione di codice php all’interno delle pagine.

Il tutto funziona egregiamente con un solo problema: la pagina cambia due volte al giorno, in concomitanza con i due bollettini giornalieri emessi. Ma la pagina di Worpress risultava con la data di creazione e modifica alla data di creazione originale. Questo si rifletteva nella sitemap XML penalizzando l’indicizzazione di Google in quanto la pagina risultava sì aggiornata due volte al giorno, come contenuti, ma le date reali erano ferme al 2012.

In pratica utilizzando contenuti dinamici mediante php all’interno di Worpress le pagine risultano penalizzate nell’indicizzazione in quanto la data non riflette la reale modifica.

Dopo una lunga e infruttuosa ricerca di plugin che risolvessero il problema ho deciso di scrivere un mini-script che aggiorni i 4 campi della data del di Worpress con la data e ora corrente e contestualmente aggiorni la sitemap xml.

Worpress usa 4 date, due coppie formate da orario normale e orario GMT. La prima coppia è la data di creazione del post, la seconda la modifica.

Lo script le aggiorna tutte.

<?php

$data=date("Y-m-d H:i:s");
$datagmt=gmdate("Y-m-d H:i:s");

$DBhost = "indirizzodb";
$DBuser = "utente";
$DBpass = "password";

$con=mysql_connect($DBhost, $DBuser, $DBpass);
if (mysql_error() > "") print mysql_error() . "<br>";

$sql = "UPDATE `miatabella`.`wp_posts` SET `post_date` = \"$data\", `post_date_gmt` = \"$datagmt\", `post_modified` = \"$data\", `post_modified_gmt` = \"$datagmt\" WHERE `wp_posts`.`ID` = numerodelpost;";

$result = mysql_query($sql);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
mysql_close($con);

$url = "url per ricostruire la sitemap;  
$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, $url);  
curl_setopt($ch, CURLOPT_HEADER, 0);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  

$output = curl_exec($ch);  

curl_close($ch);  
?>

Lo script viene richiamato 2 volte al giorno dal cronjob e ora la pagina risulta sempre aggiornata come in effetti lo è!

Voto lettori
- Voti: 0 Media: 0

3 commenti

  1. Si ma dove dobbiamo aggiungere questo codice in quale “FILE” di wordpress ?
    Ho capito bene che serve al fatto che ogni giorno anche un post vecchissimo lo vede con data fresca ed aggiornata ?

    1. Sì serve per aggiornare la data nel dabatase. Il file va messo via ftp da qualche parte nel server e richiamato giornalmente da un cron.

Rispondi a Walter Annulla risposta

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