Poster à distance un article sous WordPress

Notez cet article

Comme vous le savez déjà, WordPress est la plateforme de blog la plus populaire au monde. Robuste, fiable et performant, ce programme m’a rapidement conquis pour certains projets que j’avais. Mais ce n’est que récemment que Pagasa a été migré sous WordPress.

C’est grâce à un nombre gigantesque de plugins et sa capacité à fonctionner en XML-RPC que WordPress est également devenu l’outil idéal pour les spammeurs gens qui veulent payer plus d’impôts.

L’idée derrière cela est toute simple: créer des centaines de blogs, générer automatiquement du contenu et gagner de l’argent grâce au trafic obtenu, essentiellement celui en provenance des moteurs de recherche, mais pas seulement. Un tel machin s’appelle un autoblog. Ce dernier utilise souvent des plugins autogénérateurs de contenu, tels que wp-o-matic par exemple. Et c’est grâce à l’ordonnanceur automatique de WordPress, wp-cron, que les articles apparaissent tout seul, miraculeusement. Plus besoin de payer un indien pour avoir du contenu, le rêve total mais avec toutefois un bémol de taille: l’article obtenu n’est pas toujours génial.

Le problème avec cette façon de procéder, c’est que cela peut prendre beaucoup de ressources, et parfois pénaliser l’ensemble du site. Et puis certains préfèrent dédier une autre machine à la construction du contenu: cela évite ainsi un éventuel bannissement par l’hébergeur voir même plus grave par Google. En clair, il vaut mieux prendre le risque d’avoir des soucis avec sa propre connexion ADSL plutôt que d’exposer inutilement votre site web: vous débranchez et rebranchez votre MachinBOX et le problème est résolu.

Et finalement lorsque l’on dispose déjà à la maison d’une machine infernale à base de Nunux, de Mysql, de scripts Perl et PHP, on souhaite tout de même plus utiliser son propre arsenal plutôt que celui des autres: c’est tout de même plus confortable. Le but donc est de déporter la création du contenu et de l’expédier au moyen du XML-RPC gracieusement mis à disposition par WordPress. A noter aussi que cette façon de procéder n’est pas uniquement réservée à des opérations blackhat. Par exemple, on peut imaginer avoir un éditeur HTML très performant sur sa machine, y écrire ses articles en local, et l’expédier à WordPress par la façon que je vais vous décrire.

La toute première chose à faire qui vous évitera des heures de recherches inutiles est d’activer l’interface XML-RPC dans WordPress. Allez dans Settings, Writing et cochez « XML-RPC ».

Pour Perl, le mieux est d’utiliser le module WordPress XML-RPC. Si vous n’avez pas de Cpanel, ce module s’installe au moyen de CPAN:


perl -MCPAN -e shell
install WordPress::XML-RPC

Et voici un petit script tout simple:

#!/usr/bin/perl
use WordPress::XMLRPC;

#
# Initialise la structure XMLRPC
#

my $mwp = WordPress::XMLRPC->new({
username => 'votre login WP',
password => 'votre mdp WP',
proxy => 'http://www.votresitewp.com/xmlrpc.php', });

#
# Initialise l'article
#

$article->{title} = "Le titre de votre article";
$article->{categories} = ['Categorie 1','Categorie 2'];
$article->{description} = "Le contenu de votre article";

#
# Poste l'article
# Le premier paramètre est la structure de votre article
# Le second indique si l'article doit être publié (1) ou juste crée
# en tant que brouillon (0)
# 

$mwp->newPost($article, 1);

Voilà, testé sous 2 blogs WordPress 2.7.1, et ça marche sans problème.

Comme beaucoup d’entre vous ne parlent pas bien le Perl, voici une version PHP plus abordable.  Avant tout, vous devez avoir installé les bibliothèques XML-RPC et CURL pour PHP pour que le script fonctionne.

Et voici le script PHP:

<?php

//
// Login, mot de passe et URL RPC
//

$login ="votre login WP";
$mdp = "votre MDP WP";
$rpc = "http://votreblogWP/xmlrpc.php";

//
// Les ID catégories que vous trouverez dans l'URL (cat_ID=xx)
// 1 = uncategorized
//

$categories = array(1);
$categories = implode(",", $categories);

//
// Les paramètres
//

$titre = "Le titre de l'article";
$article = "Contenu de l'article";
$XML = "<category>$categories</category><title>$titre</title>".$article;
$param = array('','',$login,$mdp,$XML,1);
$req = xmlrpc_encode_request('blogger.newPost',$param);

//
// Appel à CURL
//

$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_URL, $rpc);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_exec($ch);
curl_close($ch);
?>

Voilà, et encore une fois testé sans aucun problème sur un WordPress 2.7.1 distant de 8000 kilomètres de mon Nunux familial.

Bien entendu, ces scripts ne sont qu’une pierre d’un édifice beaucoup plus vaste, mais ils permettent déjà de résoudre une problématique de taille: l’autopostage.

4 commentaires sur “Poster à distance un article sous WordPress

  1. J’ai beau parcourir le fichier xmlrpc.php comment fais tu pour ajouter une date de postage autre que celle du jour ?

    Je me renseigne aussi pour le faire avec le protocole de publication Atom mais je manque de documentation.

Laisser un commentaire