{"id":229046,"date":"2022-10-27T09:15:00","date_gmt":"2022-10-27T06:15:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229046"},"modified":"2022-11-09T05:19:37","modified_gmt":"2022-11-09T02:19:37","slug":"association-de-metadonnees-wordpress-entites-liees","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/association-de-metadonnees-wordpress-entites-liees\/","title":{"rendered":"Association de m\u00e9tadonn\u00e9es WordPress\u00a0: entit\u00e9s li\u00e9es"},"content":{"rendered":"\n<p>\u00c0 ce stade, nous avons expliqu\u00e9 comment cr\u00e9er les entit\u00e9s dans le plugin (qui, comme nous l&rsquo;avons dit, n&rsquo;est qu&rsquo;un mot fantaisiste pour une autre id\u00e9e concr\u00e8te). \u00c0 savoir, nous avons un utilisateur et un type de publication personnalis\u00e9, ou un livre. Et c&rsquo;est l\u00e0 que nous commen\u00e7ons \u00e0 prendre les deux entit\u00e9s distinctes et \u00e0 les combiner et \u00e0 travailler avec ce que nous appellerons l&rsquo;association de m\u00e9tadonn\u00e9es WordPress.<\/p>\n<p>Mais avant cela, il est important de comprendre les deux types de m\u00e9tadonn\u00e9es avec lesquelles nous allons travailler et les deux mani\u00e8res (ou trois mani\u00e8res, selon la fa\u00e7on dont vous le voyez) de la fa\u00e7on dont nous pouvons associer les m\u00e9tadonn\u00e9es.<\/p>\n<p>Comme pour le reste des articles de la s\u00e9rie, il ne s&rsquo;agit pas d&rsquo;approfondir la compr\u00e9hension de chacun des tableaux ou d&rsquo;approfondir chacune des fonctions de l&rsquo;API. Au lieu de cela, nous allons \u00e9tudier ce qui est disponible, les mettre \u00e0 profit et laisser des d\u00e9tails plus fins pour les futurs articles (ou peut-\u00eatre des discussions dans les commentaires).<\/p>\n<h2>Association de m\u00e9tadonn\u00e9es WordPress<\/h2>\n<p>Les m\u00e9tadonn\u00e9es ne sont pas exclusives \u00e0 WordPress. Vous le savez probablement. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Metadata\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Et c&rsquo;est souvent d\u00e9fini comme<\/a> :<\/p>\n<blockquote>\n<p>Informations sur des informations ou des donn\u00e9es sur des donn\u00e9es.<\/p>\n<\/blockquote>\n<p>Et c&rsquo;est une bonne fa\u00e7on de le dire. WordPress propose diff\u00e9rentes tables de base de donn\u00e9es que nous pouvons utiliser pour fournir des informations sur certains autres types d&rsquo;entit\u00e9s dans WordPress. Nous allons en utiliser quelques-uns plus tard dans cet article, mais il suffit de dire que <a href=\"https:\/\/codex.wordpress.org\/Database_Description\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress propose<\/a> :<\/p>\n<ul>\n<li>m\u00e9tadonn\u00e9es des commentaires,<\/li>\n<li>poster des m\u00e9tadonn\u00e9es,<\/li>\n<li>m\u00e9tadonn\u00e9es de termes,<\/li>\n<li>et m\u00e9tadonn\u00e9es utilisateur<\/li>\n<\/ul>\n<p>Et tout cela est disponible pr\u00eat \u00e0 l&#8217;emploi.<\/p>\n<p>L&rsquo;une des tables de m\u00e9tadonn\u00e9es WordPress.<\/p>\n<p>Les API pour chacun d&rsquo;entre eux sont coh\u00e9rentes, ce qui est bien aussi. Mais, encore une fois, nous ne nous int\u00e9resserons qu&rsquo;\u00e0 quelques-uns d&rsquo;entre eux pour le reste de cet article.<\/p>\n<h3>1 Les tableaux de m\u00e9tadonn\u00e9es<\/h3>\n<p>Pour notre exemple, nous allons utiliser l&rsquo;une des deux tables suivantes, ou les deux\u00a0:<\/p>\n<ol>\n<li><a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_postmeta\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_postmeta<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_usermeta\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_usermeta<\/a><\/li>\n<\/ol>\n<p>Certes, dans votre installation, ils peuvent avoir un pr\u00e9fixe diff\u00e9rent, mais le suffixe est le m\u00eame, et vous voyez l&rsquo;id\u00e9e.<\/p>\n<p>Deuxi\u00e8mement, nous utiliserons les fonctions API associ\u00e9es pour associer nos m\u00e9tadonn\u00e9es. Nous les examinerons dans le code lorsque nous associerons les donn\u00e9es entre notre utilisateur et le type de publication personnalis\u00e9 (ou notre auteur et nos livres si vous souhaitez utiliser la terminologie la plus pr\u00e9cise).<\/p>\n<p>D&rsquo;accord, alors. Toute cette premi\u00e8re partie de l&rsquo;article ne fait que jeter les bases des parties de l&rsquo;infrastructure WordPress sous-jacente que nous allons utiliser. Cela dit, regardons comment nous pouvons transformer cette chose par programme en quelque chose d&rsquo;un peu plus utile.<\/p>\n<h3>2 Associer des m\u00e9tadonn\u00e9es<\/h3>\n<p>L&rsquo;id\u00e9e derri\u00e8re l&rsquo;association de m\u00e9tadonn\u00e9es WordPress semble plus compliqu\u00e9e qu&rsquo;elle ne l&rsquo;est. Pense-y de cette fa\u00e7on:<\/p>\n<ul>\n<li>\u00c9tant donn\u00e9 deux tables, comment pouvons-nous partager des informations entre deux entit\u00e9s qui informent l&rsquo;une sur l&rsquo;autre ?<\/li>\n<\/ul>\n<p>Par exemple, \u00e9tant donn\u00e9 un utilisateur, comment pouvons-nous informer les m\u00e9tadonn\u00e9es de l&rsquo;utilisateur des m\u00e9tadonn\u00e9es de publication. Ou, inversement, comment pouvons-nous laisser les m\u00e9tadonn\u00e9es de publication savoir quoi que ce soit sur les m\u00e9tadonn\u00e9es d&rsquo;utilisateur associ\u00e9es\u00a0?<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167597-61e7a5d09f770.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167597-61e7a5d09f770.jpg\" alt=\"Association de m\u00e9tadonn\u00e9es WordPress\u00a0: entit\u00e9s li\u00e9es\" ><\/a><\/p>\n<p>\u00c0 un niveau \u00e9lev\u00e9, c&rsquo;est vraiment ce que nous faisons\u00a0: nous faisons savoir \u00e0 une entit\u00e9 que l&rsquo;autre existe et nous la relions \u00e0 l&rsquo;autre. Ou cela pourrait aller dans l&rsquo;autre sens. Selon votre impl\u00e9mentation, l&rsquo;un peut \u00eatre plus avantageux que l&rsquo;autre.<\/p>\n<h4>1 aller simple<\/h4>\n<p>Lorsque nous parlons de cr\u00e9er des associations WordPress \u00e0 sens unique, nous parlons g\u00e9n\u00e9ralement de l&rsquo;id\u00e9e qu&rsquo;une seule entit\u00e9 est au courant de l&rsquo;autre. Cela signifie que l&rsquo;utilisateur peut seulement \u00eatre au courant de la publication.<\/p>\n<p>Ainsi, nous pourrions configurer apr\u00e8s la cr\u00e9ation d&rsquo;un article que l&rsquo;utilisateur en question ait connaissance de l&rsquo;article qui <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c1245410fdf288edd11c9547711dd76c#file-01-post-aware-of-user-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vient d&rsquo;\u00eatre cr\u00e9\u00e9<\/a>\u00a0:<\/p>\n<pre><code>&lt;?php\n\n\/\/ Using post title as the value, but it's just an example.\nadd_user_meta( $user_id, $post_id, $post_title );<\/code><\/pre>\n<p>Ou peut-\u00eatre que cela signifie que la publication conna\u00eet l&rsquo;utilisateur\u00a0:<\/p>\n<pre><code>&lt;?php\n\n\/\/ User user email address a value but just an example.\nadd_post_meta( $post_id, $user_id, $email_address );<\/code><\/pre>\n<p>Mais peu importe comment vous le regardez, l&rsquo;association ne va que dans un sens.<\/p>\n<p>Et m\u00eame si la relation va dans un sens, il n&rsquo;est pas n\u00e9cessaire qu&rsquo;il en soit ainsi. Autrement dit, les deux entit\u00e9s peuvent \u00eatre conscientes l&rsquo;une de l&rsquo;autre.<\/p>\n<h4>2 bidirectionnel<\/h4>\n<p>\u00c9tant donn\u00e9 que les API de m\u00e9tadonn\u00e9es sont si faciles et coh\u00e9rentes \u00e0 utiliser, il n&rsquo;est pas difficile de travailler avec elles. Chacun d&rsquo;entre eux n\u00e9cessite g\u00e9n\u00e9ralement au moins deux des \u00e9l\u00e9ments suivants\u00a0:<\/p>\n<ol>\n<li>un identifiant de sorte auquel les m\u00e9tadonn\u00e9es sont li\u00e9es,<\/li>\n<li>une cl\u00e9 m\u00e9ta qui peut \u00eatre utilis\u00e9e pour rechercher les informations,<\/li>\n<li>une valeur qui stocke les informations associ\u00e9es \u00e0 l&rsquo;ID et \u00e0 la publication.<\/li>\n<\/ol>\n<p>L&rsquo;ID et la cl\u00e9 que vous choisissez d\u00e9pendent souvent de votre impl\u00e9mentation, comme nous l&rsquo;avons vu.<\/p>\n<p>Jusqu&rsquo;\u00e0 pr\u00e9sent, nous avons cherch\u00e9 comment cr\u00e9er une association \u00e0 sens unique. Une association bidirectionnelle n&rsquo;est pas quelque chose de diff\u00e9rent. C&rsquo;est juste plut\u00f4t que de rendre une entit\u00e9 consciente de l&rsquo;autre, nous rendons les deux entit\u00e9s conscientes de l&rsquo;autre\u00a0:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Using this association will give you the ability to query for information \n * both on posts and users and then work with the data accordingly.\n *\/\nadd_user_meta( $user_id, $post_id, $post_title );\nadd_post_meta( $post_id, $user_id, $email_address );\n<\/code><\/pre>\n<p>Mais ce n&rsquo;est pas une d\u00e9cision qui doit \u00eatre prise juste pour le plaisir. Au lieu de cela, il vaut la peine de r\u00e9fl\u00e9chir \u00e0 certaines des raisons pour lesquelles vous voudrez peut-\u00eatre choisir l&rsquo;un ou l&rsquo;autre.<\/p>\n<h3>R\u00e9fl\u00e9chir au probl\u00e8me<\/h3>\n<p>Lorsqu&rsquo;il s&rsquo;agit de r\u00e9soudre des probl\u00e8mes comme celui-ci, il n&rsquo;y a pas de solution d\u00e9finitive en termes de &quot;vous devriez le faire de mani\u00e8re d\u00e9finitive [de cette fa\u00e7on]&quot;, quelle que soit la mani\u00e8re dont cela peut \u00eatre. Au lieu de cela, vous devez vous poser des questions comme &quot;qu&rsquo;est-ce qui fait que le le moyen le plus simple de g\u00e9rer ces donn\u00e9es\u00a0?\u00a0\u00bb<\/p>\n<p>Par exemple, si vous \u00eates principalement int\u00e9ress\u00e9 par la gestion des utilisateurs, il vous suffit peut-\u00eatre d&rsquo;avoir des m\u00e9tadonn\u00e9es utilisateur au courant de l&rsquo;entit\u00e9 \u00e0 laquelle elles sont li\u00e9es. De cette fa\u00e7on, lorsque l&rsquo;utilisateur est supprim\u00e9, vous vous assurez \u00e9galement de rechercher les entit\u00e9s qui lui sont associ\u00e9es via la table de m\u00e9tadonn\u00e9es de l&rsquo;utilisateur et de les supprimer \u00e9galement.<\/p>\n<p>De m\u00eame, peut-\u00eatre que la m\u00eame fonctionnalit\u00e9 irait dans les deux sens. Autrement dit, tout comme vous voulez vous assurer que lorsqu&rsquo;un utilisateur est supprim\u00e9, ses messages sont \u00e9galement supprim\u00e9s, vous pouvez \u00e9galement vouloir que l&rsquo;utilisateur soit supprim\u00e9 (ou modifi\u00e9) chaque fois qu&rsquo;un de ses messages est supprim\u00e9. Et si c&rsquo;est le cas, alors l&rsquo;association bidirectionnelle le permet.<\/p>\n<p>\u00c9tant donn\u00e9 que vous avez l&rsquo;ID d&rsquo;un message donn\u00e9 et l&rsquo;ID d&rsquo;un utilisateur donn\u00e9 ainsi que les m\u00e9ta-cl\u00e9s que vous avez sp\u00e9cifi\u00e9es, presque tous les types de requ\u00eates que vous pouvez imaginer via l&rsquo;API de m\u00e9tadonn\u00e9es WordPress ou <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Query<\/a> ou m\u00eame via <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/WP_User_Query\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_User_Query<\/a> est possible .<\/p>\n<h2>La fin<\/h2>\n<p>En fin de compte, j&rsquo;esp\u00e8re que cette s\u00e9rie a fourni des informations sur la fa\u00e7on non seulement de cr\u00e9er des associations de m\u00e9tadonn\u00e9es WordPress, mais \u00e9galement sur la fa\u00e7on de penser de mani\u00e8re abstraite aux concepts de WordPress en ce qui concerne la cr\u00e9ation d&rsquo;impl\u00e9mentations de niveau sup\u00e9rieur dans vos plugins et vos applications Web.<\/p>\n<p>Pour ceux qui sont int\u00e9ress\u00e9s, j&rsquo;envisage de publier cette s\u00e9rie sous la forme d&rsquo;une petite ressource au format PDF avec un plugin fonctionnel \u00e0 \u00e9tudier. Si c&rsquo;est quelque chose qui vous int\u00e9resse, veuillez vous inscrire \u00e0 la liste de diffusion ici, et je ne manquerai pas de vous faire savoir quand elle sera pr\u00eate\u00a0; sinon, utilisez les informations de la s\u00e9rie pour avancer et cr\u00e9er quelque chose de valable<\/p>\n<h3>Vouloir plus?<\/h3>\n<h2>Messages de la s\u00e9rie<\/h2>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Association de m\u00e9tadonn\u00e9es WordPress: comment faire<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/creation-par-programmation-dutilisateurs-wordpress\/\" title=\"Cr\u00e9ation par programmation d&#039;utilisateurs WordPress\">Cr\u00e9ation par programmation d&rsquo;utilisateurs WordPress<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/types-de-publication-wordpress-une-abstraction-pour-les-entites\/\" title=\"Types de publication WordPress: une abstraction pour les entit\u00e9s\">Types de publication WordPress: une abstraction pour les entit\u00e9s<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/wordpress-metadata-association-entities\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Association de m\u00e9tadonn\u00e9es WordPress\u00a0: entit\u00e9s li\u00e9es<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C&rsquo;est ici que nous commen\u00e7ons \u00e0 prendre les deux entit\u00e9s distinctes et \u00e0 les combiner et \u00e0 travailler avec ce que nous appellerons l&rsquo;association de m\u00e9tadonn\u00e9es WordPress.<\/p>\n","protected":false},"author":1,"featured_media":220451,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,841,862],"tags":[1167],"class_list":["post-229046","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229046"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229046\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/220451"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}