Comment travailler avec les métadonnées de publication WordPress

Dans le premier article de cette série, j'ai donné un aperçu de tous les types de métadonnées proposées par WordPress, de leur conservation et de ce que nous allons couvrir tout au long de cette série.. 

De plus, j'ai défini ce que sont les métadonnées. son rôle dans WordPress et son importance pour nous en tant que développeurs. Mais l’introduction n’était que cela: une enquête sur ce que nous allons couvrir dans le reste de cette série..

À partir de cet article, nous allons commencer à explorer la Meta API de WordPress Post pour voir pourquoi elle est utile, ce que nous pouvons en faire et comment tirer parti des méthodes proposées par l'application WordPress..

Un déni de responsabilité pour tous

Premièrement, si vous êtes un développeur avancé, il est peu probable que cette série de tutoriels vous soit d'une grande aide. Au lieu de cela, il est davantage destiné à ceux qui ont un peu travaillé sur des thèmes, ont peut-être peaufiné du code de plug-in et sont prêts à aller plus loin en ajoutant des informations supplémentaires aux messages (ou aux types d'articles) composant leur projet..

Deuxièmement, notez que les exemples de code de ce tutoriel sont ne paspour une utilisation dans un environnement de production. Au lieu de cela, le code que nous allons examiner n’est pas destiné à être utilisé partout où tout le monde a accès au site..

En ce moment, je prévois de couvrir des techniques plus avancées pour ce sujet après avoir parcouru cette série. Mais pour l'instant, nous allons seulement nous préoccuper de travailler avec l'API.

Pourquoi? Quel est le retard dans la couverture d'informations supplémentaires? En termes simples, il s’agit de la sécurité des sites Web. Plus précisément, chaque fois que nous écrivons des informations dans la base de données, nous devons supposer que les données ne sont pas dans un format que nous pouvons stocker en toute sécurité. nous devons assainir les données.

Il existe un ensemble entièrement différent d'API pour la désinfection des données que nous devons explorer, qui fonctionnera conjointement avec les API de métadonnées, mais ce n'est pas le didacticiel pour le faire..

Je sais, il peut sembler un peu frustrant de parler de ces API sans pouvoir les exploiter. Rappelez-vous cependant qu'il s'agit d'une introduction à l'API. Les tutoriels devraient vous fournir suffisamment d’informations pour vous permettre de commencer à travailler avec des métadonnées post sur votre machine, mais ils devraient également laisser assez de questions pour que nous puissions approfondir le sujet dans une future série d’articles..

Cela dit, allons de l'avant et commençons avec la WordPress Post Meta API. Et soyez averti: ceci est un long tutoriel.

Une introduction à l'API

Avant d'examiner le code, il est important de vous assurer que vous disposez des outils nécessaires pour parcourir la base de données sur laquelle votre installation WordPress s'exécute. Certains des outils disponibles incluent:

  • phpMyAdmin
  • Suite Pro
  • MySQL Workbench
  • Administrateur

Mais n'hésitez pas à utiliser ce que vous préférez. Tant que vous pouvez afficher les données de la base de données, vous êtes prêt à commencer..

Ensuite, comprenons comment WordPress définit les métadonnées de publication. Selon le Codex:

WordPress permet aux auteurs de publication d'attribuer des champs personnalisés à une publication. Ces informations supplémentaires arbitraires sont appelées métadonnées..

Les méta-données sont traitées avec des paires clé / valeur. La clé est le nom de la méta-donnée. La valeur est l'information qui apparaîtra dans la liste de méta-données sur chaque article individuel auquel l'information est associée..

En termes plus simples, WordPress nous permet d’écrire des informations personnalisées dans la base de données, de les associer à tout message souhaité, puis de les récupérer au besoin. En outre, les informations sont stockées en utilisant des paires clé / valeur uniques..

Écrire nos propres métadonnées

Si cela vous semble étranger, ne vous inquiétez même pas. L'idée est que pour chaque valeur que vous stockez, elle est liée à une clé unique (un peu comme une poignée de porte a une clé unique pour la déverrouiller). 

La clé est de savoir comment récupérer la valeur de la publication. Mais cela soulève une question: que se passera-t-il si une publication est associée à plusieurs métadonnées? Autrement dit, si une publication donnée peut avoir plusieurs métadonnées stockées à côté, comment récupérer des métadonnées uniques?

Comme nous le verrons plus tard, en plus d'utiliser la clé utilisée lors du stockage des données, nous devons également transmettre l'ID unique de la publication à la fonction..

Rien ne fonctionne mieux que de le voir en action, cependant. Donc, en supposant que WordPress soit configuré sur votre ordinateur local et que les modifications vous conviennent functions.php au cœur de votre thème par défaut, commençons.

Pour référence

Je vais utiliser les outils suivants:

  • WordPress 4.4
  • Le thème des vingt-six ans
  • Atome
  • Suite Pro

La chose la plus importante est que vous utilisez WordPress et le thème mentionné ci-dessus.

Enfin, si vous êtes plus à l'aise avec un autre IDE et une base de données frontale, c'est très bien.

Nous avons couvert de nombreuses informations dans l'introduction de cet article, mais cela nous sera utile si nous commençons à nous intéresser non seulement à l'API Post Meta, mais également aux autres API. Alors gardez cet esprit. Je ferai également référence à cet article dans de futurs articles..

Fouillons dans l'API.

Une note très importante

La façon dont nous allons incorporer le code est ne pas la manière professionnelle d’apporter des modifications à votre thème, d’implémenter cette fonctionnalité ou d’interfacer avec une API. Nous faisons cela pour les débutants d'un débutant dans le développement WordPress. 

Dans une série de suivi, nous allons prendre le travail que nous avons effectué dans cette série et l'extraire dans un plug-in plus facile à maintenir, qui inclut également une plus grande attention portée à la maintenabilité, à la sécurité, etc..

Pour l'instant, nous nous concentrons sur les bases de l'API.

Préparer le thème

N'oubliez pas que j'utilise une installation de base de WordPress avec le thème des vingt-six ans pour les démos que nous allons voir tout au long de ce didacticiel et du reste des didacticiels de la série..

Deuxièmement, nous allons faire des changements dans functions.php. Ce n'est généralement pas le meilleur endroit pour faire ce changement; cependant, assurez-vous d'avoir lu la note ci-dessus avant de poursuivre..

Cela dit, supposons que votre serveur fonctionne, que votre IDE soit prêt et prêt, et functions.php dans votre éditeur. Bien que votre capture d'écran puisse sembler un peu différente, elle devrait ressembler à ceci:

Le défi de travailler avec functions.php est-ce qu'il est déjà plein de code qui aide à alimenter le thème existant. Bien que nous déplacions finalement notre code dans un plugin d'une future série, prenons au moins la première étape pour créer notre fichier afin que nous puissions contenir notre code..

En utilisant votre IDE de choix:

  1. Créer un nouveau fichier dans le répertoire racine du thème des vingt-six ans.
  2. Nommez le fichier tutsplus-metadata.php.

Une fois cela fait, vous devriez avoir quelque chose comme ça sur votre système de fichiers:

Enfin, nous devons nous assurer d’inclure cela dans functions.php. Pour ce faire, ajoutez la ligne de code suivante juste sous la balise PHP d'ouverture. 

Rechargez votre navigateur. Si tout se passe bien, vous devriez voir le thème exactement tel qu'il était avant d'ajouter votre fichier à functions.php

Maintenant, mettons-nous au travail.

Commencer

Rappelez-vous notre discussion précédente selon laquelle nous avons besoin de trois choses pour ajouter des métadonnées à la base de données:

  1. un identifiant de poste
  2. une clé unique avec laquelle nous pouvons identifier les métadonnées
  3. une valeur avec laquelle nous allons stocker que nous voulons récupérer plus tard

Pour ce tutoriel, tout ce qui nous intéresse est d’ajouter des métadonnées qui apparaîtront sur la liste par défaut. Bonjour le monde! poste qui vient standard dans chaque installation de WordPress.

Disons que nous voulons ajouter des métadonnées qui incluent notre nom. Donc, la clé méta que nous allons utiliser est mon nom et la valeur que nous allons utiliser est quel que soit votre nom. Dans mon cas, c'est "Tom McFarlin".

La première chose à faire est de définir une fonction qui s’accroche à le contenu. Cela nous permettra de sortir notre texte lorsque la fonction sera exécutée. Si vous n'êtes pas familier avec les crochets, lisez cette série.

Votre code initial devrait ressembler à ceci:

Lorsque vous exécutez ce code, la chaîne "[Nous sommes ici.]" Doit apparaître au-dessus du contenu de la publication avant toute autre chose. n'arrive que sur le Bonjour le monde! poster. C’est parce que nous vérifions que l’ID est égal à 1 avant de écho la ficelle.

Notez que la version finale du code partagé à la fin de cet article sera complète avec des commentaires. En attendant, je vais expliquer ce que fait le code au fur et à mesure que nous ajoutons chaque nouvelle pièce à notre code..

Ajout de métadonnées

Ajoutons maintenant quelques métadonnées réelles. Pour ce faire, ajoutez ce code dans le corps de la condition afin que nous soyons sûrs de le faire pour Bonjour le monde. Puisque nous vérifions déjà l'ID de 1 dans le conditionnel, nous pouvons simplement supprimer le code que nous avons ajouté à la section précédente et le mettre à jour..

Dans le corps du conditionnel, nous ferons un appel à la add_post_meta Fonction API qui ressemble à ceci:

Ce serait bien si nous pouvions faire quelque chose avec cette information. Avant de le faire, cependant, il y a quelques informations supplémentaires que nous devons couvrir. Notamment sur la mise à jour des métadonnées (et la différence entre l'ajout de métadonnées) et certaines nuances auxquelles vous ne vous attendez pas lorsque vous utilisez l'API..

Mise à jour des métadonnées

Il existe une différence subtile entre l'ajout de métadonnées et la mise à jour de métadonnées. Vous savez comment une clé identifie de manière unique une valeur qui lui est associée? Eh bien, c'est partiellement exact.

Quand vous appelez add_post_meta, vous créez une entrée à chaque fois que vous passez cet appel. Donc dans notre code ci-dessus, si vous actualisez la page trois fois, vous verrez quelque chose comme ceci:

Curieux, non? Rappelez-vous ce que dit le Codex:

Notez que si la clé donnée existe déjà parmi les champs personnalisés de la publication spécifiée, un autre champ personnalisé avec la même clé est ajouté, sauf si l'argument $ unique est défini sur true. Dans ce cas, aucune modification n'est apportée..

Ah, il y a un paramètre optionnel que la fonction accepte. C'est un booléen appelé $ unique, et cela nous permet de passer vrai si nous voulons seulement nous assurer que la valeur ajoutée est unique.

Vous voudrez peut-être supprimer vos enregistrements existants à ce stade. Si non, c'est bien, il suffit d'utiliser une valeur différente pour le mon nom clé.

Cela signifie que nous pourrions mettre à jour notre code afin qu'il ressemble à ceci:

Maintenant, vous ne créez qu'une seule entrée. En outre, si vous essayez de modifier la valeur de cette clé dans le code, alors ce serait ne pas être écrasé dans la base de données. Une fois l'écriture terminée, les métadonnées de publication sont stockées telles qu'elles étaient la première fois..

Mais ça ne doit pas être comme ça, et c'est là update_post_meta entre en jeu. En réalité, update_post_meta pourrait être utilisé plus que add_post_meta, en fonction de votre cas d'utilisation.

Avant d'examiner le code, vérifiez ce que dit le Codex:

La fonction update_post_meta () met à jour la valeur d'une clé méta existante (champ personnalisé) pour la publication spécifiée..
Cela peut être utilisé à la place de la fonction add_post_meta (). La première chose que fera cette fonction est de s’assurer que $ meta_key existe déjà sur $ post_id. Sinon, add_post_meta ($ post_id, $ meta_key, $ meta_value) est appelé à la place et son résultat est renvoyé..

Avez-vous attrapé ça? Il peut "être utilisé à la place de add_post_meta", ce qui est utile car cela signifie:

  1. Si les métadonnées de publication existent déjà pour une clé donnée,
  2. Si tu utilises update_post_meta,
  3. Vous écraserez la valeur précédente.

À ce stade, vous souhaiterez peut-être supprimer les informations de votre base de données ou créer une nouvelle paire de clés et de valeurs. Cela signifie que nous pouvons mettre à jour notre code afin qu'il ressemble à ceci:

Cela comporte des dangers inhérents, bien que. 

À savoir, si vous écrasez une valeur que vous n'avez jamais voulu écraser, cette valeur disparaîtra et ne pourra plus être récupérée (à moins que vous ne fassiez un travail plus sophistiqué qui ne relève pas de cette série)..

Il y a un argument final facultatif pour update_post_meta, si, et c'est le $ prev_value argument. Autrement dit, vous pouvez spécifier la valeur que vous souhaitez écraser..

Prenons, par exemple, le cas où vous avez plusieurs enregistrements avec la même clé créés avec add_post_meta et vous voulez mettre à jour un seul de ces enregistrements. Pour mettre à jour ces données, vous devez transmettre la valeur correspondant à cet enregistrement..

Quelle est la différence?

La différence entre add_post_meta et update_post_meta peut être considéré comme subtil, mais cela dépend de votre cas d'utilisation. 

Je vais essayer de les décomposer le plus simplement possible car, même si cela peut sembler compliqué à la lumière des exemples que nous avons vus ci-dessus, il est plus simple de tout expliquer..

  • add_post_meta est utile lorsque vous souhaitez introduire un enregistrement dans la base de données. Si la valeur existe déjà, la nouvelle valeur peut être écrite ou non. Si vous passez vrai pour le $ unique paramètre de la fonction, seul le premier enregistrement sera créé, et rien va écraser que sauf update_post_meta.
  • update_post_meta peut être utilisé à la place de add_post_meta et écrasera toujours la valeur précédente qui existait. Si vous travaillez avec plusieurs enregistrements créés par add_post_meta, alors vous devrez peut-être spécifier une valeur précédente que vous souhaitez écraser.

Et c'est tout. Bien sûr, nous devons encore récupérer les enregistrements de la base de données et les afficher à l'écran.

Récupérer les métadonnées

Lorsqu'il s'agit de récupérer des métadonnées de publication, vous devez vous rappeler deux choses principales:

  1. Les métadonnées peuvent être récupérées sous forme de chaîne.
  2. Les métadonnées peuvent être récupérées sous forme de tableau.

Parfois, cela dépend de la manière dont vous avez stocké les informations d'origine. d'autres fois, il est basé sur la façon dont vous voulez travailler avec elle.

Avant d'examiner les différentes manières de récupérer des informations, examinons d'abord l'appel de base de l'API. Plus précisément, je parle de get_post_meta. Si vous avez suivi jusqu'ici, alors comprendre l'API devrait être relativement facile.

La fonction accepte trois paramètres:

  1. l'identifiant de la poste
  2. la clé de métadonnées
  3. une valeur booléenne facultative pour si vous souhaitez récupérer la valeur sous forme de chaîne ou de tableau (où un tableau est la valeur par défaut si rien n'est spécifié)

Du Codex:

Récupère le champ méta d'un post pour un post. Sera un tableau si $ single est faux. Sera la valeur du champ de métadonnées si $ single est vrai.

Cela semble assez facile. Donc, étant donné que le dernier bit de notre code source se trouve actuellement, je dirais que nous pouvons récupérer des informations en effectuant un appel tel que get_post_meta (get_the_ID (), 'mon_nom');.

Le code, tel qu'il se trouve ci-dessus, retournera un tableau. 

Valeurs multiples

Chaque fois que vous entendez l'expression "valeurs multiples", il peut être utile de penser à un tableau ou à un type de collecte de données dans le langage de programmation que vous utilisez..

Dans nos exemples, pensez au moment où nous stockons plusieurs fois la même clé en utilisant add_post_meta. En guise de rappel, voici à quoi ressemblait la base de données:

Si je récupérais les informations par leur clé, que recevrais-je? Puisque je n’ai pas précisé que je voulais une chaîne, je récupérerais un tableau de tous les enregistrements. Cela me permettrait de parcourir chacun d’eux.

Si, par contre, je devais spécifier true pour vouloir récupérer une chaîne, je ne récupérerais que la première ligne créée avec add_post_meta.

À cette fin, si vous souhaitez récupérer plusieurs valeurs pour une clé donnée, votre code ressemblera à ceci:

Notez que j'utilise var_dump pour faciliter la visualisation des informations renvoyées par WordPress dans le navigateur; Cependant, je suis plutôt fan de l’utilisation d’un débogueur, ce dont nous pourrons parler dans un prochain article.. 

Valeurs uniques

Supposons maintenant que vous souhaitiez stocker des valeurs uniques pour un article. Dans ce cas, vous avez toujours besoin de l'ID de publication et de la clé de métadonnées. Cependant, vous devrez également fournir vrai comme troisième paramètre à get_post_meta.

Comme mentionné ci-dessus, si vous êtes confronté à une situation dans laquelle plusieurs lignes ont été créées à l'aide de add_post_meta, alors vous allez récupérer la première ligne qui a été créée; Cependant, si vous utilisez cette fonction à côté de update_post_meta alors vous obtiendrez une valeur de chaîne des données qui ont été stockées.

Puisque nous avons couvert le premier mais pas le dernier, voici à quoi ressemble le code:

Et ensuite, vous récupérerez la valeur que vous avez enregistrée en tant que méta-valeur lorsque vous appelez la fonction. C'est assez simple en comparaison de devoir travailler avec un ensemble d'enregistrements et de tableaux qui peuvent ou non contenir des informations similaires..

Suppression de métadonnées

La dernière partie du travail avec les métadonnées post a tout à voir avec la possibilité de les supprimer. C'est facile, mais il faut comprendre quelques nuances pour s'assurer de le faire efficacement..

Mais d’abord, voici la définition du Codex:

Cette fonction supprime tous les champs personnalisés avec la clé spécifiée, ou la clé et la valeur, de la publication spécifiée.. 

Court, doux et précis. La fonction accepte trois arguments:

  1. l'identifiant de la poste
  2. la méta clé
  3. la méta valeur

La méta-valeur est facultative, mais elle est utile si vous avez déjà travaillé avec add_post_meta et souhaitez supprimer l'une des entrées spécifiques créées par plusieurs appels à cette fonction (comme nous l'avons vu ailleurs dans ce didacticiel).

Bien que faisant un appel à delete_post_meta est aussi simple que de passer un identifiant de publication, la clé méta et la valeur méta optionnelle, la fonction renvoie une valeur booléenne indiquant si les données ont été supprimées ou non..

Voici un exemple de code permettant de supprimer certaines métadonnées de publication que nous avons examinées jusqu'à présent:

Cependant, votre implémentation peut varier. Si vous travaillez avec plusieurs métadonnées et que vous voulez vérifier que la suppression a été effectuée avec succès, vous pouvez envelopper le code de manière conditionnelle..

Un dernier exemple de code

Vous trouverez ci-dessous un long extrait de code documenté qui devrait représenter la majorité de ce dont nous avons parlé dans ce didacticiel. Notez que les fonctions sont reliées à le contenu.

Ceci est juste à des fins de démonstration afin que vous puissiez facilement déclencher le lancement de ces fonctions chaque fois que vous chargez une page particulière.

En règle générale, vous trouverez des fonctions de métadonnées associées à d'autres points d'ancrage tels que save_post et des opérations similaires, mais ceci est un sujet pour un travail plus avancé. Peut-être que nous couvrirons cela dans une autre série plus tard cette année.

Conclusion

Chacune des fonctions de l'API est disponible dans le Codex WordPress. Si vous souhaitez aller de l'avant et lire davantage avant le prochain article de la série, n'hésitez pas à le faire..

Comme mentionné précédemment, il s'agit d'une introduction à la Meta API de WordPress Post. Grâce aux informations fournies dans le Codex, dans ce didacticiel et dans le code source fourni, vous devriez pouvoir commencer à écrire du contenu supplémentaire dans la base de données en rapport avec chacun de vos messages..

Rappelez-vous, cependant, ceci est destiné à des fins de démonstration car nous avons plus d'informations à couvrir. Plus précisément, nous devons examiner la désinfection et la validation des données. Bien que nous ayons d'abord à traiter d'autres sujets (tels que les métadonnées de l'utilisateur, les métadonnées de commentaires, etc.), nous passerons bientôt à des sujets plus avancés..

En fin de compte, nous essayons de jeter les bases pour les futurs développeurs WordPress à partir de la date à laquelle ils vont de l'avant et travaillent sur des solutions pour les autres, pour leurs agences ou même pour leurs projets..

Cela dit, je suis impatient de continuer cette série. N'oubliez pas que si vous débutez, vous pouvez consulter ma série sur la façon de démarrer avec WordPress, qui traite de sujets spécifiques aux débutants de WordPress..

En attendant, si vous recherchez d'autres utilitaires pour vous aider à développer votre ensemble croissant d'outils pour WordPress ou pour que le code soit étudié et approfondi dans WordPress, n'oubliez pas de voir ce que nous avons disponible dans Envato. Marché.

N'oubliez pas que vous pouvez voir tous mes cours et tutoriels sur ma page de profil et vous pouvez me suivre sur mon blog et / ou Twitter à @tommcfarlin, où je parle de diverses pratiques de développement de logiciels et de la façon dont nous pouvons les utiliser dans WordPress..

S'il vous plaît n'hésitez pas à laisser des questions ou des commentaires dans le flux ci-dessous, et je vais essayer de répondre à chacun d'eux.

Ressources

  • Les champs personnalisés
  • add_post_meta
  • update_post_meta
  • get_post_meta
  • delete_post_meta
  • Post Meta Function Exemples
  • écho
  • var_dump