{"id":229037,"date":"2022-10-26T16:06:00","date_gmt":"2022-10-26T13:06:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229037"},"modified":"2022-11-09T05:19:46","modified_gmt":"2022-11-09T02:19:46","slug":"types-de-publication-wordpress-une-abstraction-pour-les-entites","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/types-de-publication-wordpress-une-abstraction-pour-les-entites\/","title":{"rendered":"Types de publication WordPress : une abstraction pour les entit\u00e9s"},"content":{"rendered":"\n<p>Lorsque les programmeurs parlent d&rsquo;entit\u00e9s, ils parlent g\u00e9n\u00e9ralement d&rsquo;un concept ou de quelque chose qui existe dans un syst\u00e8me. Parfois, c&rsquo;est une classe, parfois c&rsquo;est une biblioth\u00e8que ou une d\u00e9pendance, ou il peut s&rsquo;agir de quelque chose comme les types de publication WordPress.<\/p>\n<p>Si WordPress doit \u00eatre consid\u00e9r\u00e9 comme une <a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">base d&rsquo;application (par opposition \u00e0 un framework)<\/a>, il est important de penser \u00e0 certaines fonctionnalit\u00e9s de mani\u00e8re \u00e0 pouvoir les traiter comme des entit\u00e9s. Dans l&rsquo;exemple ci-dessus, un type de publication n&rsquo;est que cela.<\/p>\n<p>Lorsque les types de publication personnalis\u00e9s ont \u00e9t\u00e9 introduits, <a href=\"https:\/\/make.wordpress.org\/training\/handbook\/theme-school\/custom-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cela nous a permis<\/a> d&rsquo;introduire autre chose que des pages et des publications dans l&rsquo;application. D\u00e9sormais, nous pouvons impl\u00e9menter n&rsquo;importe quel concept &#8211; comme un <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/interroger-les-types-de-publications-devenements-avec-wp-query-et-le-calendrier-des-evenements\/\" title=\"\u00e9v\u00e9nement\">\u00e9v\u00e9nement<\/a> &#8211; et le traiter comme une entit\u00e9 \u00e0 part enti\u00e8re au sein du syst\u00e8me.<\/p>\n<p>Mais quand tout est dit et fait, tout est enregistr\u00e9 dans le tableau des messages. Et c&rsquo;est bien parce que le d\u00e9veloppement de logiciels est une question d&rsquo;abstraction. Au fur et \u00e0 mesure que nous impl\u00e9mentons les types de publication WordPress, nous impl\u00e9mentons une abstraction au-dessus de l&rsquo;id\u00e9e de publication.<\/p>\n<h2>Types de publication WordPress<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/creation-par-programmation-dutilisateurs-wordpress\/\" title=\"Dans le dernier article\">Dans le dernier article<\/a>, j&rsquo;ai parcouru le processus de cr\u00e9ation d&rsquo;un utilisateur qui sera finalement associ\u00e9 \u00e0 une entit\u00e9 dans l&rsquo;application WordPress.<\/p>\n<ul>\n<li>Peut-\u00eatre est-il l&rsquo;auteur d&rsquo;un post,<\/li>\n<li>Peut-\u00eatre est-il le vendeur d&rsquo;un produit,<\/li>\n<li>Peut-\u00eatre est-il le narrateur d&rsquo;une histoire,<\/li>\n<li>Ou tout ce que vous pouvez imaginer.<\/li>\n<\/ul>\n<p>Les possibilit\u00e9s sont infinies. Mais avant de parler de la fa\u00e7on de cr\u00e9er une association entre les deux entit\u00e9s &#8211; c&rsquo;est-\u00e0-dire l&rsquo;utilisateur et le type de publication WordPress &#8211; nous devons parler de la fa\u00e7on d&rsquo;impl\u00e9menter une entit\u00e9 ou un type de publication personnalis\u00e9 par programme.<\/p>\n<p>Il y a beaucoup de documentation \u00e0 ce sujet, et il y a beaucoup de tutoriels disponibles \u00e0 ce sujet, donc je ne vais pas m&rsquo;attarder sur ce point. Au lieu de cela, je vais essayer de garder cela aussi simple que possible. N&rsquo;oubliez pas que l&rsquo;objectif de toute cette s\u00e9rie est d&rsquo;arriver finalement \u00e0 un point o\u00f9 nous associons des entit\u00e9s via des m\u00e9tadonn\u00e9es.<\/p>\n<p>Mais avant cela, nous devons cr\u00e9er les entit\u00e9s. Ainsi, nous avons un utilisateur, alors faisons cela.<\/p>\n<p>Pour notre exemple, disons que l&rsquo;utilisateur que nous avons cr\u00e9\u00e9 dans le post pr\u00e9c\u00e9dent, Meghan, est l&rsquo;auteur d&rsquo;un livre. Et dans une installation WordPress g\u00e9r\u00e9e par quelqu&rsquo;un d&rsquo;autre, il existe un type de publication personnalis\u00e9 pour les livres, chacun ayant quelques attributs\u00a0:<\/p>\n<ul>\n<li>Titre,<\/li>\n<li>la description,<\/li>\n<li>date de publication,<\/li>\n<li>ISBN,<\/li>\n<li>nombre d&rsquo;exemplaires initiaux vendus,<\/li>\n<li>o\u00f9 il peut \u00eatre achet\u00e9,<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>Vous pouvez ajouter plus ou moins \u00e0 votre impl\u00e9mentation. En fait, vous vendez peut-\u00eatre des livres \u00e9lectroniques et l&rsquo;URL du livre \u00e0 acheter est l&rsquo;un des attributs. Quoi qu&rsquo;il en soit, vous voyez l&rsquo;id\u00e9e.<\/p>\n<p>Cela dit, nous pouvons impl\u00e9menter un simple type de publication personnalis\u00e9 pour les &quot;livres&quot; par programmation.<\/p>\n<h3>Impl\u00e9mentation d&rsquo;un type de publication<\/h3>\n<p>Et \u00e7a ressemble <a href=\"https:\/\/gist.github.com\/tommcfarlin\/17ab6e5d052da8d471b15cfd70ffa37c\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e0 \u00e7a<\/a> :<\/p>\n<pre><code>&lt;?php\n\nadd_action( 'init', 'acme_create_book_post_type' );\n\/**\n * Creates a new custom post type called 'Book' using the smallest number of arguments\n * to prepare the post type.\n *\/\nfunction acme_create_book_post_type() {\n\n    $args = array(\n        'labels' =&gt; array(\n            'name'          =&gt; 'Books',\n            'singular_name' =&gt; 'Book',\n        ),\n        'public' =&gt; true,\n    );\n    register_post_type( 'acme_book', $args );\n}<\/code><\/pre>\n<p>Si vous lisez la documentation sur la <a href=\"https:\/\/codex.wordpress.org\/Post_Types\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cr\u00e9ation de types de publication personnalis\u00e9s<\/a>, il n&rsquo;y a rien d&rsquo;anormal \u00e0 cela. Il devrait ressembler exactement \u00e0 ce que vous attendez.<\/p>\n<p>En ce qui concerne l&rsquo;endroit o\u00f9 vous cr\u00e9ez, cela d\u00e9pend de la nature de votre projet. Il y a beaucoup de gens qui plaideront pour qu&rsquo;il soit dans un plugin ou int\u00e9gr\u00e9 dans un th\u00e8me. Ce n&rsquo;est pas le lieu d&rsquo;en d\u00e9battre. Qu&rsquo;il suffise de dire que, pour mes besoins, je suppose que tout cela fait partie du m\u00eame plugin du tutoriel pr\u00e9c\u00e9dent.<\/p>\n<p>De plus, je ne digresse pas sur les taxonomies personnalis\u00e9es, les commentaires ou tout autre type de donn\u00e9es personnalis\u00e9 qu&rsquo;il est possible d&rsquo;associer \u00e0 un type de publication personnalis\u00e9.<\/p>\n<p>\u00c0 partir de l\u00e0, nous examinons ensuite \u00e0 quoi cela ressemble dans la zone d&rsquo;administration de WordPress ainsi que dans la base de donn\u00e9es.<\/p>\n<h3>Regardez derri\u00e8re le rideau<\/h3>\n<p>Tout d&rsquo;abord, voici \u00e0 quoi cela ressemble (ou devrait ressembler) dans la zone d&rsquo;administration de WordPress\u00a0:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a62adc9ed.png\" 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-167618-61e7a62adc9ed.png\" alt=\"Types de publication WordPress : une abstraction pour les entit\u00e9s\" ><\/a><\/p>\n<p>Et si vous regardez la base de donn\u00e9es apr\u00e8s avoir cr\u00e9\u00e9 une entr\u00e9e, vous verrez quelque chose comme ceci :<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167618-61e7a6307603a.png\" 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-167618-61e7a6307603a.png\" alt=\"Types de publication WordPress : une abstraction pour les entit\u00e9s\" ><\/a><\/p>\n<p>\u00c9videmment, j&rsquo;ai limit\u00e9 les enregistrements renvoy\u00e9s dans le front-end de la base de donn\u00e9es en filtrant les r\u00e9sultats pour rendre la capture d&rsquo;\u00e9cran plus facile \u00e0 suivre.<\/p>\n<h2>Sur les livres<\/h2>\n<p>Et c&rsquo;est tout, vraiment. Je veux dire, au niveau le plus fondamental, c&rsquo;est ainsi que vous cr\u00e9ez un type de publication personnalis\u00e9 dans WordPress. Je sais que ce n&rsquo;est pas nouveau, mais si je pouvais plaider un peu plus en faveur d&rsquo;un message comme celui-ci, il inclurait les deux points suivants.<\/p>\n<h4>1 Il s&rsquo;agit d&rsquo;abstractions<\/h4>\n<p>Si vous cherchez \u00e0 cr\u00e9er des applications Web \u00e0 l&rsquo;aide de WordPress, il est important d&rsquo;arr\u00eater de penser aux choses en termes traditionnels comme les publications, les pages, les commentaires et les cat\u00e9gories, et de commencer \u00e0 les consid\u00e9rer comme des abstractions plus g\u00e9n\u00e9riques.<\/p>\n<p>Entit\u00e9s, comme mentionn\u00e9 pr\u00e9c\u00e9demment dans l&rsquo;article. Une fois que vous l&rsquo;aurez fait, vous aurez un changement dans le mod\u00e8le mental qui d\u00e9termine votre capacit\u00e9 \u00e0 r\u00e9fl\u00e9chir et \u00e0 mettre en \u0153uvre une solution.<\/p>\n<h4>2 Il s&rsquo;agit de relations<\/h4>\n<p>Bien que nous pensions souvent aux choses dans leurs parties individuelles telles que les publications et les pages, nous savons intrins\u00e8quement que les publications peuvent avoir des commentaires, les commentaires peuvent avoir des r\u00e9ponses, les pages peuvent avoir des mod\u00e8les, etc.<\/p>\n<p>Il existe des relations entre toutes ces choses individuelles qui font partie du syst\u00e8me. Et quand vous commencez \u00e0 penser aux relations comme \u00e9tant quelque chose qui nous permet de faire plus, vous commencez \u00e0 voir \u00e0 quel point quelque chose peut \u00eatre puissant. C&rsquo;est un tout &quot;le tout est plus grand que la somme de ses parties.&quot;<\/p>\n<p>Donc, une fois que vous avez des entit\u00e9s individuelles en place et une fois que vous commencez \u00e0 voir comment elles peuvent \u00eatre li\u00e9es les unes aux autres, vous faites un pas en avant dans la cr\u00e9ation de quelque chose qui r\u00e9sout un probl\u00e8me l\u00e9g\u00e8rement plus complexe \u00e0 partir de parties apparemment simples.<\/p>\n<p>Et c&rsquo;est l\u00e0 que nous nous dirigerons ensuite.<\/p>\n<h2>Qu&rsquo;en est-il des m\u00e9tadonn\u00e9es\u00a0?<\/h2>\n<p>Le but de cette s\u00e9rie est de parcourir comment cr\u00e9er une association entre des entit\u00e9s, n&rsquo;est-ce pas\u00a0? Plus pr\u00e9cis\u00e9ment, nous cherchons \u00e0 cr\u00e9er une association entre un utilisateur et un article ou, plus pr\u00e9cis\u00e9ment, un auteur et un livre.<\/p>\n<p>WordPress fournit la base pour ce faire et c&rsquo;est l\u00e0 que la puissance des tables et des crochets suppl\u00e9mentaires peut entrer en jeu. Dans le prochain article, je vais parler de la fa\u00e7on de cr\u00e9er cette association, des directions que peuvent prendre les associations et de la fa\u00e7on de travailler avec ces donn\u00e9es si, par exemple, un utilisateur est supprim\u00e9 de l&rsquo;application.<\/p>\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:\/\/tommcfarlin.com\/wordpress-post-types\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Types de publication WordPress: une abstraction pour les entit\u00e9s<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/association-de-metadonnees-wordpress-entites-liees\/\" title=\"Association de m\u00e9tadonn\u00e9es WordPress\u00a0: entit\u00e9s li\u00e9es\">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>Lorsque les programmeurs parlent d&rsquo;entit\u00e9s, ils parlent g\u00e9n\u00e9ralement d&rsquo;une partie individuelle d&rsquo;un syst\u00e8me, comme les types de publication WordPress.<\/p>\n","protected":false},"author":1,"featured_media":221177,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[915,893,717,841,862],"tags":[1167],"class_list":["post-229037","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","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\/229037","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=229037"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229037\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/221177"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}