{"id":231832,"date":"2022-12-25T11:52:00","date_gmt":"2022-12-25T08:52:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231832"},"modified":"2022-11-10T05:23:09","modified_gmt":"2022-11-10T02:23:09","slug":"utilizzo-delle-funzioni-al-posto-dei-globali-get_post_field","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-delle-funzioni-al-posto-dei-globali-get_post_field\/","title":{"rendered":"Utilizzo delle funzioni al posto dei globali: get_post_field"},"content":{"rendered":"\n<p>Poich\u00e9 PHP ha continuato ad andare avanti e WordPress (e la sua economia degli sviluppatori) lavora per iniziare a utilizzare pi\u00f9 delle funzionalit\u00e0 pi\u00f9 moderne, una delle cose che vediamo ancora accadere \u00e8 l&#8217;uso dei globali all&#8217;interno di WordPress.<\/p>\n<p>In una certa misura, \u00e8 inevitabile: parti significative dell&#8217;applicazione sono state create utilizzando globali quando quella era la funzione che era una caratteristica principale; altre parti, tuttavia, sono andate avanti fornendo classi o funzioni che ci impediscono di doverlo fare.<\/p>\n<p>Caso in questione: <code>get_post_field<\/code>\u00e8 una solida alternativa all&#8217;utilizzo del <code>$post<\/code>globale che fornisce gran parte delle stesse informazioni in un modo leggermente pi\u00f9 moderno (e probabilmente pi\u00f9 sicuro) di leggere i dati.<\/p>\n<p>Per molti, usare <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-00-get-post-slug-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">qualcosa come il seguente<\/a> \u00e8 una pratica comune:<\/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>Non \u00e8 raro vedere qualcosa di simile <code>get_the_title(get_the_ID());<\/code>in tutto il codice, il che \u00e8 positivo, ma ci sono ancora momenti in cui vediamo codice scritto che accede ad alcuni aspetti del post corrente.<\/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=\"Utilizzo delle funzioni al posto dei globali: get_post_field\" ><\/a><\/p>\n<p>E mi chiedo quanto sia davvero necessaria quella pratica per la <code>get_post_field<\/code>funzione. Dal <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">codice di riferimento:<\/a><\/p>\n<blockquote>\n<p>Recupera i dati da un campo post in base all&#8217;ID post.<\/p>\n<p>Esempi del campo post saranno &#8216;post_type&#8217;, &#8216;post_status&#8217;, &#8216;post_content&#8217;, ecc. e basati sulla propriet\u00e0 dell&#8217;oggetto post o sui nomi delle chiavi.<\/p>\n<\/blockquote>\n<p>Un esempio simile a questa funzione sarebbe 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>funzione in cui si passa una stringa specifica alla funzione per la quale si desidera recuperare informazioni, nonch\u00e9 un ID (o l&#8217;oggetto post completo, ma quando l&#8217;ID \u00e8 sufficiente, perch\u00e9 no?).<\/p>\n<p>La differenza qui \u00e8 che recupererai il valore del campo richiesto o una stringa vuota (piuttosto che un errore o null o false) quando la richiesta non riesce. Ci\u00f2 significa che dovremmo scrivere una clausola condizionale o di guardia per gestire un caso del genere.<\/p>\n<p>Quindi un caso d&#8217;uso completo di questa funzione e del codice potrebbe richiedere <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\">un paio di funzioni<\/a> :<\/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>Tutto ci\u00f2 pu\u00f2 essere legato insieme in <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-03-get-post-slug-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">questo modo:<\/a><\/p>\n<pre><code>&lt;?php\n\nif (hasPostSlug()) {\n  echo getPostSlug();\n}<\/code><\/pre>\n<p>Lo scopo della condivisione di questo tipo di codice \u00e8 aiutare a condividere alcune delle alternative che abbiamo alle variabili globali per condividere anche le API esistenti ma che potrebbero essere sottoutilizzate.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <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 \u00e8 un&#8217;alternativa all&#8217;utilizzo delle funzioni al posto dei globali. Ed \u00e8 uno dei tanti che dovremmo usare mentre avanziamo.<\/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":[896,720,844,865],"tags":[1168],"class_list":["post-231832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231832"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231832\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/235955"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}