Insérer des articles automatiques sur votre blog WordPress

Wordpress inserer articles automatiques sur votre blog

J’avais un petit script à réaliser pour publier des articles sans passer par l’administration classique du blog, je me suis donc récemment plongé dans l’architecture de la base de données WordPress afin de comprendre comment elle fonctionnait afin de pouvoir mettre en place mon script.

J’avais besoin qu’à intervalle régulier via un cron, des articles se créent automatiquement en allant chercher du contenu ailleurs (sur une autre base de donnée par exemple ou alors sur un ftp pour publier chaque jour une photo [ce qui était ici mon besoin]).

Plutôt que de garder pour moi les recherches que j’avais faites, je vous fait partager cela en espérant que ça puisse servir à d’autres!

Voici donc l’architecture simplifiée de votre base de données WordPress (nous ne verrons ici que la partie “article” sans nous préoccuper donc des comptes utilisateurs, commentaires…).

La table “wp_post”

Sans doute la table la plus importante puisque c’est le coeur du blog: les articles!

table wp_post wordpress

La table “wp_postmeta”

Cette table sert à ajouter des informations métas (couple clé => valeur) à un article.

table wp_postmeta wordpress

Dans cet exemple sorti tout droit d’un de mes blogs, on peut voir que l’article “3651” a plusieurs informations qui lui sont rattachées tels qu’une pièce jointe, l’attribut alt de cette image, mais également les dimensions de cette image…

Elle est beaucoup utilisée pour le versionning des articles ce qui permet de récupérer d’anciennes versions d’un article. Dans notre exemple nous ne l’utiliserons pas mais je tenais à vous en parler.

Elle contient donc un tas d’informations différentes telles que la dernière date de modification de l’article, la personne qui a modifié ou contribué à l’article, enfin je vous conseille d’y jeter un oeil pour voir de vous même tout ce qu’elle contient!

La table “wp_term_taxonomy”

Cette table contient entre autres les id de catégories auxquels les articles seront rattachés. Les infos qui nous intéréssent ici sont les infos contenues dans la colonne “taxonomy” dont la valeur vaut : “category”.

table wp_term_taxonomy wordpress

On voit donc que mon autre blog il y a 7 catégories d’articles différentes.

Pour savoir à quoi correspondent ces id de catégories, il nous faut aller voir dans l’autre table qui lui est liée: “wp_terms”

La table “wp_terms”

Cette table contient deux données distinctes:

  • La première est celle qui nous intéresse: c’est le nom des catégories “term_id” que l’on a vu dans la table du dessus. On y voit donc par exemple que le term_id = 9 correspond à la catégorie “Images drôles”.
  • La seconde donnée est relative aux tags/mots clés associés aux articles. Tous les tags utilisés dans les articles se retrouvent aussi dans cette table.

table wp_terms wordpressNous retrouvons donc dans cette table les infos liées au catégories mais également la liste des tags (dans cet exemple à partir du term_id > 12).

Le champ slug correspond au nom du “term” en version compatible au format url (accents et caractères spéciaux retirés).

La table “wp_term_relationships”

Cette table comme son nom l’indique presque va faire la liaison entre les articles et les “terms” (catégories et mots clés) qui lui sont associés.

Elle est très simple et ne contient que trois colonnes:

  • object_id : l’id de l’article
  • term_taxonomy_id : l’id du tag ou de la catégorie
  • order: semble ne plus servir car pour mes 1000 articles, toutes les données sont à 0

table wp_term_relationships wordpress

Ici pour l’article 3649 on voit qu’il y a 4 “terms” associés, la valeur 1 dans “term_taxonomy_id” correspond à la catégorie par défaut “Non classé” (voir table wp_terms plus haut).

Concrètement vous avez maintenant deux solutions:

  • Les tags et la catégories de vos articles automatiques ne changera pas (ce qui est mon cas, ce sera toujours des articles “Drôles” avec les tags “x” et “y” qui seront ajoutés de façon automatique):

J’ai donc créé manuellement les tags et les catégories auxquels mes articles automatisés seront rattachés. (insertion dans les tables “wp_term_taxonomy” et “wp_terms” ) et j’ai récupéré leur id respectives (ex je veux que mes articles aient toujours la catégorie “Images” et “Images drôles” leur Id respectifs sont 8 et 9 (voir la table “wp_terms”).

Il n’y a alors que très peu de choses à faire:

  1. Créer l’article en base dans la table “wp_post”
  2. Récupèrer l’id de l’article créé (avec mysql_insert_id() par exemple)
  3. Pour chaque term_id (dans mon exemple: 8 et 9), j’ajoute un enregistrement dans la table “wp_term_relationships” en spécifiant l’id de l’article récupéré à l’étape 2.
  • Le tags et les catégories de vos articles automatiques peuvent changer en fonction de différents paramètres.

Il vous faudra donc:

  1. Créer dynamiquement des derniers en ajoutant vos nouvelles catégories dans la table “wp_terms_taxonomy” en spécifiant dans le champ “taxonomy” si il s’agit d’une catégorie (category) ou d’un tag (post_tag).
  2. Récupérer l’id créé (avec mysql_insert_id() par exemple.
  3. Insérer un enregistrement dans “wp_terms” avec l’id récupérer en étape 2.
  4. Stocker par exemple chaque id dans un tableau et une fois l’article publié vous affecterez à chaque “term_id” l’id de l’article créé (dans la table “wp_terms_relationship”).
  5. Créer l’article en base dans la table “wp_post”
  6. Récupèrer l’id de l’article créé (avec mysql_insert_id() par exemple)
  7. Pour chaque term_id récupéré à l’étape 4, j’ajoute un enregistrement dans la table “wp_term_relationships” en spécifiant l’id de l’article récupéré à l’étape 2.

Ressource supplémentaire:

Schéma complet de l’architecture de la base de données WordPress 3.0

9 thoughts to “Insérer des articles automatiques sur votre blog WordPress”

Leave a Reply to Bankroll Gratuit Poker Cancel reply

Your email address will not be published. Required fields are marked *