Avoir une idée de site web, c’est bien! Rédiger tout le contenu… c’est très valorisant!
Mais parfois, on veut aller un peu plus vite que ça!
Pour gérer un seul site, se connecter à une admin et aller rédiger à la main peut être amusant. Mais avec 150+ sites à gérer et des contenus générés par différents outils à la volée, il devient intéressant de savoir publier en masse sans faire trop n’importe quoi.
WordPress a une option qui nous permet de faire un truc sympa: la date de publication modifiable.
Ce qui veut dire qu’on peut publié dans le présent, le passé ou le futur!
Ce qui peut donner l’idée suivante: j’ai 150 articles à publier et je ne veux pas tout mettre à la même date, ça va pas le faire.
On va donc prévoir le tout en amont et faire en sorte d’avoir des contenus, soit prévus jusqu’en 2051, soit antidatés.
Pour ça, on va utiliser NodeJs et 2 packages sympas:
- Moment (qui permet de jouer sur les dates)
- Wpapi (qui permet d’intéragir à distance avec notre WordPress)
npm install moment
npm install wpapi
Mais avant ça, truc important. L’API rest de WP est plutôt bien faite. Et poster à distance devient donc un peu compliqué sans un plugin magique:
https://github.com/WP-API/Basic-Auth
Une fois ce petit plugin installé, vous pourrez vous connecter à distance à vos sites le plus facilement du monde.
Il ne reste plus qu’à envoyer le tout. Pour ça, il nous faut:
- Un fichier avec les contenus (on va l’appeler articles.txt)
- Un site WordPress
Le fichier articles.txt va contenir tous vos articles à publier… avec quelques séparations utilises pour ne pas tout publier dans un seul article.
Disons alors que pour un article, il nous faut de base, un titre et un contenu.
On va séparer les deux par 3 dièses: ###
Et pour faire la séparation entre les articles, on va mettre 3 + => +++
Ce qui nous donne un fichier de ce style
Titre 1
###
Mon joli contenu 1
+++
Titre 2
###
Mon joli article 2
+++
Titre 3
###
Mon troisième article sympathique.
etc...
Voilà notre fichier articles.txt configurés. Pas besoin d’aller chercher à faire du json ou autre, c’est facile à gérer.
Il ne reste plus qu’à publier tout ça, en prévoyant du contenu futur ou antidaté avec intervale de publication:
== CODE ==
const fs = require("fs");
const moment = require("moment");
var WPAPI = require("wpapi");
const blogUrl = "https://site.fr/";
const login = "LOGIN";
const password = "PASS";
const cat = 3; // id de votre catégorie
//console.log(`date 1: ${dateToPost} ensuite: ${nextPostDate}`);
// authentification
var wp = new WPAPI({
endpoint: `${blogUrl}/wp-json`,
// This assumes you are using basic auth, as described further below
username: login,
password: password,
});
var fileContents = fs.readFileSync("./articles.txt", "utf8");
//console.log(fileContents);
const articles = fileContents.split("+++");
// count articles
const postNum = articles.length;
const startDateToPost = moment().subtract(120, 'days').format();
for (var i = 0; i < postNum-1; i++) {
let article = articles[i].split("###");
let title = article[0];
if(title === '') {continue;}
let content = article[1];
title = title.charAt(0).toUpperCase() + title.slice(1);
wp.posts()
.create({
// "title" and "content" are the only required properties
title: title,
content: content,
categories: [cat],
// Post will be created as a draft by default if a specific "status"
// is not specified
status: "publish",
date: moment(startDateToPost).add(7*i, 'days').format(),
})
.then(function (response) {
// "response" will hold all properties of your newly-created post,
// including the unique `id` the post was assigned on creation
console.log(`Successfully created post #${response.id}`);
})
.catch(function (err) {
// Something went wrong!
console.log(err);
});
}
Si aucun code ne s’affiche ci-dessus, vous le retrouverez par ici: le code
Et voilà!
Ligne 29, on retire 120 jours de la date du jour pour publier dans le passé.
On boucle sur le fichier articles.txt avec les articles.
Et pour chacun, ligne 48, on ajoute 7 jours. Soit un article publié par semaine. Ce qui parait plutôt normal pour un être humain.
Il ne reste plus qu’à jouer avec les dates selon ce que vous avez à poster.
Si vous utilisez par exemple l’API GPT3 pour générer des recettes végan pour un site, vous pouvez vous prévoir comme ça 200 articles qui seront publiés une fois par semaines pendant quelques années.
Attention en revanche! Pour les publications planifiées dans le futur, vous devrez soit avoir un peu de trafic pour déclencher la publication le jour J, soit avoir régler un appel au fichier wp-cron.php de votre WordPress quelque part sur votre hébergeur ou un service en ligne. WpFormation détaille bien la config.
A vous de jouer !