C’est assez amusant, je pensais que tout le monde savait faire et je me rends compte que pas forcément alors pour l’ami DiscoDog, une explication sur le Scheduling XMLRPC de WordPress.
C’est tout simplement créer 200 articles {uniques|aussi beau que possible|
} puis d’envoyer le tout sur son WordPress adoré en lui faisant comprendre que l’article 1 doit être publié de suite, le second dans 3 heures, le 3ème dans un jour, etc…
Avec une petite dizaine d’articles, vous gagnez rapidement quelques semaines à ne plus toucher à votre campagne de net linking, si linking il y a !
Alors tout d’abord, je ne fais pas de capture d’écran hein, mais il est préférable d’avoir activé la publication distante dans WordPress ( toi qui me lis tu as compris ah ouep ? )
- Ensuite, on télécharge la charmante classe PHP XMLRPC de chez Incutio pour avoir de quoi partir sur de bonnes bases !
- On va ensuite créer une petite class PHP pour utiliser IXR et poster à distance !
<!--?php require ('ixr.class.php'); class wp_rpc { private $url; private $login; private $pass; private $rpc; private $erreurs = array(); public $useragent; /** * WordPress_client::__construct() * * @param mixed $url * @param mixed $login * @param mixed $pass * @param string $useragent * @return */ public function __construct($url, $login, $pass, $useragent = '') { $this--->url = $url;
$this->login = trim($login);
$this->pass = trim($pass);
$this->useragent = (!$useragent)?'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)':$useragent;
$this->rpc = new IXR_Client($this->url, false, 80, $this->useragent);
}
public function verif_rpc()
{
#echo '
';
#var_dump($this->rpc->query("wp.getUsersBlogs", $this->login, $this->pass));
#echo '
';
return $this->rpc->query("wp.getUsersBlogs", $this->login, $this->pass);
}
/**
* wp_rpc::create_category()
*
* @param mixed $name
* @return
*/
public function create_category($name)
{
if (!$name)
{
return false;
}
$category["name"] = $name;
$status = $this->rpc->query("wp.newCategory","", $this->login, $this->pass,$category);
if (!$status)
{
$this->erreurs[] = "Erreur( ".$this->rpc->getErrorCode().") : ".$this->rpc->getErrorMessage()."\n";
}
return $this->rpc->getResponse();
}
/**
* WordPress_client::poster_article()
*
* @param mixed $titre
* @param mixed $categorie
* @param mixed $article
* @return
*/
public function poster_article_metaweblog($titre, $categorie, $article,$tags,$dateToPost)
{
$cat = $this->create_category($categorie);
if ($cat != false)
{
$content_struct['title'] = $titre;
$content_struct['description'] = $article;
$content_struct['categories'] = array ($categorie);
$content_struct['mt_keywords'] = $tags;
if ($dateToPost)
{
/*
|--------------------------------------------------------------------------
| Formatage de la date pour schéduler
|--------------------------------------------------------------------------
| date('Ymd\TH:i:s',time()); // tout simplement
| OU
| $oneDay = 60*60*24; // en programmant des datas alétoires ( passées/futures)
| $now = time();
| $post_interval = (0);
| $year = rand (2005,date('Y')); //optionnel
| $dateToPost = date('Ymd\TH:i:s',$now+(3*$oneDay));
|
*/
$date = new IXR_Date($dateToPost);
$content_struct['dateCreated'] = $date;
}
if (!$this->rpc->query("metaWeblog.newPost","", $this->login, $this->pass,$content_struct,'publish'))
{
$this->erreurs[] = "Votre article $titre semble posté sur votre blog mais une erreur dans la réponse renvoyée par votre Blog est survenue :";
$this->erreurs[] = "Erreur ( ".$this->rpc->getErrorCode()." ) : ".$this->rpc->getErrorMessage()."\n";
}
return ($this->rpc->getResponse())?$this->rpc->getResponse():'Erreur';
}
else
{
return false;
}
}
}
voilà c’est tout, il suffit ensuite de faire une boucle sur nos X articles et de formater correctement la date avant de passer tout ça dans la moulinette… A savoir que la date doit être formaté ainsi:
$dateToPost = date('Ymd\TH:i:s',time()); // par exemple pour poster de suite
ou pour poster à la date que l’on souhaite ( vous pouvez aussi bien posté dans le passé que dans le futur, en 2005 ou en 2015
):
$oneDay = 60*60*24; $now = time(); $post_interval = (3); // 3 jours entre les articles $year = rand (2005,date('Y')); //optionnel foreach ($articles as $id =>$article){ # on utilise l'ID du tableau d'article comme compteur # le premier est posté a 3*$id = 0 jours, le second a 3*$id = 3 jours etc... $post_interval = ($id*$post_intervals); $dateToPost = date('Ymd\TH:i:s',$now+((int)$post_interval*$oneDay)); $go = new wp_rpc('http://blogWP.com/xmlrpc.php', 'login','pass'); $go->poster_article_metaweblog('titre', 'categorie', 'ton article','des tags',$dateToPost); }
Voili voilou, il ne te reste plus qu’à rédiger tes articles et roule ma poule !
13 Commentaires sur cet article
Laisser un commentaireMerci pour cet article Jérémy
Posté le 16.6.2011 par DMWeb
Une classe PHP XML-RPC ? Aïe mes yeux ><
http://php.net/manual/fr/book.xmlrpc.php
Posté le 16.6.2011 par 512banque
T'as pas tout la dedans chef, c'est idéal pour créer ton serveur...Pour jouer avec les autres faut mettre les mains dans le camboui un minimum ;)
Réponse faite le16.6.2011 par titomus
Super article.
Est-ce qu’il y a une subtilité quelconque pour le faire fonctionner en local (curl et xmlrpc activés sous Wamp) ?
Car je ne parviens pas à « envoyer » mes articles.
Posté le 19.6.2011 par Pseudo (requis)
Curl et Xmlrpc évidemment ouep, ensuite ça devrait tourner !
Réponse faite le22.6.2011 par titomus
Salut,
Très bon tutoriel ! Cependant, j’ai un peu problème : ça ne me retourne aucune erreur, mais sur le blog en question, l’article n’apparaît pas …
Comment ça se fait ?
Posté le 24.6.2011 par Guillaume
besoin de verifier:)
Posté le 28.7.2011 par soophyhon
Idem pour moi, il ne se passe rien, ni erreur, ni post :s
Une idée ?
Posté le 6.10.2011 par Gate
Article vraiment trés instructif. félicitations pour votre blog qui est véritable plaisir à découvrir.
Amicalement.
Posté le 3.12.2011 par Positionnement Google
extrêmement louable de ta part de partager, mais faire en sorte que cela soit fonctionnel, c’est tout de même beaucoup mieux !
tu as vraiment testé le code que tu donnes ?
Posté le 11.12.2011 par fouz
Surement que j'ai testé chef ... Peut-être des erreurs avec les nouvelles version de WP mais tout tourne correctement chez moi...
Réponse faite le12.12.2011 par titomus
OK, ben je plongerais dedans pour que cela fonctionne alors. Dommage, cela m’aurait gagner plusieurs heures ce ptit truc. je t’enverrais ma version.
Posté le 13.12.2011 par fouz
Merci, chez moi ça marche nickel.
Posté le 9.1.2012 par la montre