
De nombreux utilisateurs de Wordpress éprouvent des difficultés à programmer la publication automatique de leurs articles. Cette fonctionnalités peut s’avérer pratique dans les cas où on veut préparer des articles à l’avance qui seront publiés automatiquement à des dates prédéterminées (avant un départ en vacances par exemple).
La démarche normale consiste d’abord à rédiger l’article, ensuite à modifier la date de publication pour une date à venir et finalement à cliquer «Publish».

Dans les versions plus récentes de Wordpress, la date à venir est automatiquement détectée et le texte du bouton «Publish» est alors remplacé par «Schedule».

Après ces étapes, dans la colonne «Date» de la liste des communiqués, on remarque le texte «Scheduled» sous la date de publication du communiqué en question.

Ces étapes sont donc faciles à suivre. Le problème, c’est que ça ne marche pas toujours. Il arrive parfois que le réveil de Wordpress refuse obstinément de sonner !
En effectuant des recherches, j’ai découvert que Wordpress procède à la publication automatique des articles par l’entremise du script wp-cron.php qui est responsable de changer au moment opportun le statut «Scheduled» des articles à paraître pour «Published». Le script est appelé à intervalles réguliers via une requête HTTP grâce à la fonction PHP fsockopen. Un des paramètres de cette fonction est l’url du site Web. Pour que fsockopen fonctionne il doit donc être exécuté sur un serveur qui est en mesure de résoudre son propre nom de domaine. Ça n’était pas le cas sur mon serveur et c’est précisément la raison pour laquelle la publication automatique ne fonctionnait pas.
Vous pouvez vérifier si c’est aussi votre cas en exécutant le script suivant sur votre serveur Web (sans oublier de remplacer «example.com» par l’url de votre site Web et d’ajuster le chemin vers le fichier «wp-cron.php») :
<?php
$argyle = fsockopen( 'example.com', 80, $errno, $errstr, 0.01 );
if ( $argyle ) {
fputs( $argyle, "GET /wp-cron.php HTTP/1.0\r\n" . "Host: example.com\r\n\r\n");
echo "Success sending the GET.\n";
} else {
echo "Error: $errstr ($errno)\n";
}
?>
Si vous obtenez une erreur du type «[function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known», vous êtes probablement dans la même situation. Dans ce cas, vous pouvez contacter le service technique de votre hébergeur afin de signaler que le serveur Web n’arrive pas à résoudre son propre nom de domaine et demander à ce qu’on apporte les corrections nécessaires.
Si vous contrôlez votre serveur Web, une solution possible consiste à ajouter une entrée au fichier hosts de votre système afin de faire pointer votre nom de domaine sur 127.0.0.1.
Moralité : There is no places like 127.0.0.1 !
Commentaires
Laisser un commentaire