{"id":231534,"date":"2022-12-25T11:17:00","date_gmt":"2022-12-25T08:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231534"},"modified":"2022-12-07T11:04:47","modified_gmt":"2022-12-07T08:04:47","slug":"utilisation-de-fonctions-a-la-place-des-variables-globales-get_post_field","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/utilisation-de-fonctions-a-la-place-des-variables-globales-get_post_field\/","title":{"rendered":"Utilisation de fonctions \u00e0 la place des variables globales\u00a0: get_post_field"},"content":{"rendered":"\n<p>Alors que PHP a continu\u00e9 d&rsquo;avancer et que WordPress (et son \u00e9conomie de d\u00e9veloppeurs) s&rsquo;efforce de commencer \u00e0 utiliser davantage de fonctionnalit\u00e9s plus modernes, l&rsquo;une des choses que nous voyons encore se produire est l&rsquo;utilisation de globals dans WordPress.<\/p>\n<p>Dans une certaine mesure, c&rsquo;est in\u00e9vitable: des parties importantes de l&rsquo;application ont \u00e9t\u00e9 construites \u00e0 l&rsquo;aide de variables globales alors que c&rsquo;\u00e9tait la fonctionnalit\u00e9 principale ; d&rsquo;autres parties, cependant, ont avanc\u00e9 en fournissant des classes ou des fonctions qui nous \u00e9vitent d&rsquo;avoir \u00e0 le faire.<\/p>\n<p>Exemple: <code>get_post_field<\/code>est une alternative solide \u00e0 l&rsquo;utilisation du <code>$post<\/code>global qui fournit une grande partie des m\u00eames informations d&rsquo;une mani\u00e8re l\u00e9g\u00e8rement plus moderne (et sans doute plus s\u00fbre) de lire les donn\u00e9es.<\/p>\n<p>Pour beaucoup, utiliser <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-00-get-post-slug-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">quelque chose comme ce qui suit<\/a> est une pratique courante\u00a0:<\/p>\n<pre><code>&lt;?php\n\/**\n * Retrieves the slug for the current post via the current post's\n * post_name property.\n *\n * @return string the slug of the post.\n *\/\nfunction getPostSlug(): string\n{\n  global $post;\n  return $post-&gt;post_name;\n}<\/code><\/pre>\n<p>Il n&rsquo;est pas rare de voir quelque chose comme <code>get_the_title(get_the_ID());<\/code>dans tout le code, ce qui est une bonne chose, mais il y a encore des moments o\u00f9 nous voyons du code \u00e9crit qui acc\u00e8de \u00e0 certains aspects du message actuel.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160029-61e703811521c.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-160029-61e703811521c.png\" alt=\"Utilisation de fonctions \u00e0 la place des variables globales\u00a0: get_post_field\" ><\/a><\/p>\n<p>Et je me demande \u00e0 quel point cette pratique est vraiment n\u00e9cessaire compte tenu de la <code>get_post_field<\/code>fonction. \u00c0 partir de la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">r\u00e9f\u00e9rence de code\u00a0:<\/a><\/p>\n<blockquote>\n<p>R\u00e9cup\u00e9rer les donn\u00e9es d&rsquo;un champ de publication en fonction de l&rsquo;ID de publication.<\/p>\n<p>Des exemples de champ de publication seront &lsquo;post_type&rsquo;, &lsquo;post_status&rsquo;, &lsquo;post_content&rsquo;, etc. et bas\u00e9s sur la propri\u00e9t\u00e9 de l&rsquo;objet de publication ou les noms de cl\u00e9.<\/p>\n<\/blockquote>\n<p>Un exemple similaire \u00e0 cette fonction serait la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_user_by\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>get_user_by<\/code><\/a>fonction o\u00f9 l&rsquo;on passe une cha\u00eene sp\u00e9cifique \u00e0 la fonction pour laquelle on veut r\u00e9cup\u00e9rer des informations ainsi qu&rsquo;un ID (ou l&rsquo;objet post complet, mais quand l&rsquo;ID suffit, pourquoi pas ?).<\/p>\n<p>La diff\u00e9rence ici est que vous r\u00e9cup\u00e9rerez la valeur du champ demand\u00e9 ou une cha\u00eene vide (plut\u00f4t qu&rsquo;une erreur ou null ou false) lorsque la requ\u00eate \u00e9choue. Cela signifie que nous aurions besoin d&rsquo;\u00e9crire une condition ou une clause de garde pour g\u00e9rer un tel cas.<\/p>\n<p>Ainsi, un cas d&rsquo;utilisation complet de cette fonction et du code peut n\u00e9cessiter <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-01-get-post-slug-via-field-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">quelques fonctions<\/a>\u00a0:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Generates a boolean value based on the presence of a post slug.\n *\n * @return bool True if there is a slug; otherwise, false.\n *\/\nfunction hasPostSlug(): bool\n{\n  return ('' === getPostSlug());\n}\n\n\/**\n * Retrieves the slug for the current post via the get_post_field\n * API function.\n *\n * @return string the slug of the post.\n *\/\nfunction getPostSlug(): string\n{\n  return get_post_field('post_name', get_the_ID());\n}<\/code><\/pre>\n<p>Tout cela peut \u00eatre li\u00e9 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-03-get-post-slug-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comme ceci :<\/a><\/p>\n<pre><code>&lt;?php\n\nif (hasPostSlug()) {\n  echo getPostSlug();\n}<\/code><\/pre>\n<p>Le but du partage de ce type de code est d&rsquo;aider \u00e0 partager certaines des alternatives que nous avons aux variables globales pour partager \u00e9galement les API qui existent mais qui peuvent \u00eatre sous-utilis\u00e9es.<\/p>\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>get_post_field est une alternative \u00e0 l&rsquo;utilisation de fonctions \u00e0 la place des globales. Et c&rsquo;est l&rsquo;un des nombreux que nous devrions utiliser \u00e0 mesure que nous avan\u00e7ons.<\/p>\n","protected":false},"author":1,"featured_media":235955,"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-231534","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\/231534","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=231534"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231534\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/235955"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}