Association de métadonnées WordPress : entités liées
À ce stade, nous avons expliqué comment créer les entités dans le plugin (qui, comme nous l’avons dit, n’est qu’un mot fantaisiste pour une autre idée concrète). À savoir, nous avons un utilisateur et un type de publication personnalisé, ou un livre. Et c’est là que nous commençons à prendre les deux entités distinctes et à les combiner et à travailler avec ce que nous appellerons l’association de métadonnées WordPress.
Mais avant cela, il est important de comprendre les deux types de métadonnées avec lesquelles nous allons travailler et les deux manières (ou trois manières, selon la façon dont vous le voyez) de la façon dont nous pouvons associer les métadonnées.
Comme pour le reste des articles de la série, il ne s’agit pas d’approfondir la compréhension de chacun des tableaux ou d’approfondir chacune des fonctions de l’API. Au lieu de cela, nous allons étudier ce qui est disponible, les mettre à profit et laisser des détails plus fins pour les futurs articles (ou peut-être des discussions dans les commentaires).
Association de métadonnées WordPress
Les métadonnées ne sont pas exclusives à WordPress. Vous le savez probablement. Et c’est souvent défini comme :
Informations sur des informations ou des données sur des données.
Et c’est une bonne façon de le dire. WordPress propose différentes tables de base de données que nous pouvons utiliser pour fournir des informations sur certains autres types d’entités dans WordPress. Nous allons en utiliser quelques-uns plus tard dans cet article, mais il suffit de dire que WordPress propose :
- métadonnées des commentaires,
- poster des métadonnées,
- métadonnées de termes,
- et métadonnées utilisateur
Et tout cela est disponible prêt à l’emploi.
L’une des tables de métadonnées WordPress.
Les API pour chacun d’entre eux sont cohérentes, ce qui est bien aussi. Mais, encore une fois, nous ne nous intéresserons qu’à quelques-uns d’entre eux pour le reste de cet article.
1 Les tableaux de métadonnées
Pour notre exemple, nous allons utiliser l’une des deux tables suivantes, ou les deux :
Certes, dans votre installation, ils peuvent avoir un préfixe différent, mais le suffixe est le même, et vous voyez l’idée.
Deuxièmement, nous utiliserons les fonctions API associées pour associer nos métadonnées. Nous les examinerons dans le code lorsque nous associerons les données entre notre utilisateur et le type de publication personnalisé (ou notre auteur et nos livres si vous souhaitez utiliser la terminologie la plus précise).
D’accord, alors. Toute cette première partie de l’article ne fait que jeter les bases des parties de l’infrastructure WordPress sous-jacente que nous allons utiliser. Cela dit, regardons comment nous pouvons transformer cette chose par programme en quelque chose d’un peu plus utile.
2 Associer des métadonnées
L’idée derrière l’association de métadonnées WordPress semble plus compliquée qu’elle ne l’est. Pense-y de cette façon:
- Étant donné deux tables, comment pouvons-nous partager des informations entre deux entités qui informent l’une sur l’autre ?
Par exemple, étant donné un utilisateur, comment pouvons-nous informer les métadonnées de l’utilisateur des métadonnées de publication. Ou, inversement, comment pouvons-nous laisser les métadonnées de publication savoir quoi que ce soit sur les métadonnées d’utilisateur associées ?
À un niveau élevé, c’est vraiment ce que nous faisons : nous faisons savoir à une entité que l’autre existe et nous la relions à l’autre. Ou cela pourrait aller dans l’autre sens. Selon votre implémentation, l’un peut être plus avantageux que l’autre.
1 aller simple
Lorsque nous parlons de créer des associations WordPress à sens unique, nous parlons généralement de l’idée qu’une seule entité est au courant de l’autre. Cela signifie que l’utilisateur peut seulement être au courant de la publication.
Ainsi, nous pourrions configurer après la création d’un article que l’utilisateur en question ait connaissance de l’article qui vient d’être créé :
<?php
// Using post title as the value, but it's just an example.
add_user_meta( $user_id, $post_id, $post_title );
Ou peut-être que cela signifie que la publication connaît l’utilisateur :
<?php
// User user email address a value but just an example.
add_post_meta( $post_id, $user_id, $email_address );
Mais peu importe comment vous le regardez, l’association ne va que dans un sens.
Et même si la relation va dans un sens, il n’est pas nécessaire qu’il en soit ainsi. Autrement dit, les deux entités peuvent être conscientes l’une de l’autre.
2 bidirectionnel
Étant donné que les API de métadonnées sont si faciles et cohérentes à utiliser, il n’est pas difficile de travailler avec elles. Chacun d’entre eux nécessite généralement au moins deux des éléments suivants :
- un identifiant de sorte auquel les métadonnées sont liées,
- une clé méta qui peut être utilisée pour rechercher les informations,
- une valeur qui stocke les informations associées à l’ID et à la publication.
L’ID et la clé que vous choisissez dépendent souvent de votre implémentation, comme nous l’avons vu.
Jusqu’à présent, nous avons cherché comment créer une association à sens unique. Une association bidirectionnelle n’est pas quelque chose de différent. C’est juste plutôt que de rendre une entité consciente de l’autre, nous rendons les deux entités conscientes de l’autre :
<?php
/**
* Using this association will give you the ability to query for information
* both on posts and users and then work with the data accordingly.
*/
add_user_meta( $user_id, $post_id, $post_title );
add_post_meta( $post_id, $user_id, $email_address );
Mais ce n’est pas une décision qui doit être prise juste pour le plaisir. Au lieu de cela, il vaut la peine de réfléchir à certaines des raisons pour lesquelles vous voudrez peut-être choisir l’un ou l’autre.
Réfléchir au problème
Lorsqu’il s’agit de résoudre des problèmes comme celui-ci, il n’y a pas de solution définitive en termes de "vous devriez le faire de manière définitive [de cette façon]", quelle que soit la manière dont cela peut être. Au lieu de cela, vous devez vous poser des questions comme "qu’est-ce qui fait que le le moyen le plus simple de gérer ces données ? »
Par exemple, si vous êtes principalement intéressé par la gestion des utilisateurs, il vous suffit peut-être d’avoir des métadonnées utilisateur au courant de l’entité à laquelle elles sont liées. De cette façon, lorsque l’utilisateur est supprimé, vous vous assurez également de rechercher les entités qui lui sont associées via la table de métadonnées de l’utilisateur et de les supprimer également.
De même, peut-être que la même fonctionnalité irait dans les deux sens. Autrement dit, tout comme vous voulez vous assurer que lorsqu’un utilisateur est supprimé, ses messages sont également supprimés, vous pouvez également vouloir que l’utilisateur soit supprimé (ou modifié) chaque fois qu’un de ses messages est supprimé. Et si c’est le cas, alors l’association bidirectionnelle le permet.
Étant donné que vous avez l’ID d’un message donné et l’ID d’un utilisateur donné ainsi que les méta-clés que vous avez spécifiées, presque tous les types de requêtes que vous pouvez imaginer via l’API de métadonnées WordPress ou WP_Query ou même via WP_User_Query est possible .
La fin
En fin de compte, j’espère que cette série a fourni des informations sur la façon non seulement de créer des associations de métadonnées WordPress, mais également sur la façon de penser de manière abstraite aux concepts de WordPress en ce qui concerne la création d’implémentations de niveau supérieur dans vos plugins et vos applications Web.
Pour ceux qui sont intéressés, j’envisage de publier cette série sous la forme d’une petite ressource au format PDF avec un plugin fonctionnel à étudier. Si c’est quelque chose qui vous intéresse, veuillez vous inscrire à la liste de diffusion ici, et je ne manquerai pas de vous faire savoir quand elle sera prête ; sinon, utilisez les informations de la série pour avancer et créer quelque chose de valable
Vouloir plus?
Messages de la série
- Association de métadonnées WordPress: comment faire
- Création par programmation d’utilisateurs WordPress
- Types de publication WordPress: une abstraction pour les entités
- Association de métadonnées WordPress : entités liées
