Publier un texte spinné en xml rpc

Envie de générer un auto-blog à votre sauce ou de vous faciliter la tâche pour la publication de nombreux articles sur votre blog ? La solution parfaite si vous utilisez WordPress est de manier le protocole XML-RPC. Grâce à ce protocole vous pourrez manier votre blog WordPress depuis un script situé où vous le souhaitez (en local ou sur n’importe quel serveur).

wordpress xml rpc spin

Nous allons donc voir simplement étape par étape comment coder un petit script php exploitant XML RPC pour poster à distance sur un blog WordPress, pour exploiter un texte spinné ou pour aller encore plus loin…

Poster avec XML-RPC

Remplissez les paramètres du code php suivant, placez le dans un bon vieux fichier .php, et exécutez ce fichier sur un serveur sur lequel php est installé ou en local avec Wamp ou EasyPhp par exemple.

<?php
$login = « votre-login »;
$mdp = « votre-mot-de-passe »;
$rpc = « http://www.votreblog.xx/xmlrpc.php »;
$categories = « le-numero-de-la-categorie-a-utiliser »;
$keywords = « un-tag »;
$encoding= »UTF-8″;
$title= « le-titre-de-votre-article »;
$article= « le-contenu-de-votre-article »;

function wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords= »,$encoding=’UTF-8′) {
$title = htmlentities($title,ENT_NOQUOTES,$encoding);
$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);
$content = array(
‘title’=>$title,
‘description’=>$body,
‘mt_allow_comments’=>1,
‘mt_allow_pings’=>1,
‘post_type’=>’post’,
‘mt_keywords’=>$keywords,
‘categories’=>array($category)
);
$params = array(0,$username,$password,$content,true);
$request = xmlrpc_encode_request(‘metaWeblog.newPost’,$params);

$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, $rpcurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$results = curl_exec($ch);
curl_close($ch);

return $results;
}

wpPostXMLRPC($titre,$article,$rpc,$login,$mdp,$categories,$keywords,$encoding);

?>


Poster un texte spinné avec XML-RPC

Maintenant, nous allons complexifier quelque peu ce code pour exploiter un masterspin et ainsi générer de nombreuses pages sur votre WordPress en un clic.

Commencez par compléter votre fichier avec la fonction suivante, qui va permettre de traiter un masterspin pour retourner un beau texte prêt à être publié :

function spinnage($text){
if(!preg_match(‘/{/si’, $text)) {
return $text;
}else {
preg_match_all(‘/\{([^{}]*)\}/si’, $text, $matches);
$occur = count($matches[1]);
for ($i=0; $i<$occur; $i++){
$word_spinning = explode(« | »,$matches[1][$i]);
shuffle($word_spinning);
$text = str_replace($matches[0][$i], $word_spinning[0], $text);
}
return spinnage($text);
}
}

Maintenant, nous allons ajouter 2 lignes pour traiter le texte spinné :

$article = spinnage($article);

$title= spinnage($title);

Vous n’aurez plus qu’à remplacer le contenu des variables $article et $title définies en haut de code par votre masterspin ce qui donnera quelque chose du genre :

$article = « {ceci|cela} {est|sera} le contenu de mon {article|post}« ;

$title= « {ceci|cela} {est|sera} mon titre »;


Poster plusieurs textes spinnés

Maintenant que vous commencez à comprendre le truc, vous pouvez ajouter une boucle pour générer plus d’un seul article à chaque appel. Pour cela vous allez appeler les fonctions spinnage et wpPostXMLRPC dans une boucle for (où while selon les besoins), ce qui donnera ce qui suit (pour une publication de 10 articles spinnés à la chaine) :

for ($i = 0; $i < 10; $i++) {
$title= spinnage($title);
$article = spinnage($article);
wpPostXMLRPC($titre,$article,$rpc,$login,$mdp,$categories,$keywords,$encoding);
}

Aller plus loin

Vous pourriez maintenant aller plus loin en externalisant votre masterspin dans un fichier .txt ou l’envoyer via un formulaire. Vous pourriez aussi intégrer des variables à remplacer dans votre contenu pour optimiser encore plus le contenu publié. On pourra aussi appeler le script par un CRON. Et la liste est encore longue…

Si vous souhaitez télécharger le code php présenté ci-dessus au complet, rendez-vous ici ! En cas de questions ou remarques, envoyez un commentaire ci-dessous…

1 Comment

Comments are closed.