{"id":231255,"date":"2022-12-25T12:03:00","date_gmt":"2022-12-25T09:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231255"},"modified":"2022-12-07T11:04:44","modified_gmt":"2022-12-07T08:04:44","slug":"uso-de-funciones-en-lugar-de-globales-get_post_field","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/uso-de-funciones-en-lugar-de-globales-get_post_field\/","title":{"rendered":"Uso de funciones en lugar de globales: get_post_field"},"content":{"rendered":"\n<p>A medida que PHP ha seguido avanzando y WordPress (y su econom\u00eda de desarrolladores) trabaja para comenzar a usar m\u00e1s funciones modernas, una de las cosas que todav\u00eda vemos que sucede es el uso de globales dentro de WordPress.<\/p>\n<p>Hasta cierto punto, es inevitable: partes significativas de la aplicaci\u00f3n se construyeron usando globales cuando esa era la caracter\u00edstica principal; sin embargo, otras partes han avanzado al proporcionar clases o funciones que evitan que tengamos que hacer eso.<\/p>\n<p>Caso en cuesti\u00f3n: <code>get_post_field<\/code>es una alternativa s\u00f3lida al uso de <code>$post<\/code>global que proporciona gran parte de la misma informaci\u00f3n en una forma un poco m\u00e1s moderna (y posiblemente m\u00e1s segura) de leer los datos.<\/p>\n<p>Para muchos, usar <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-00-get-post-slug-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">algo como lo siguiente<\/a> es una pr\u00e1ctica com\u00fan:<\/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>No es raro ver algo as\u00ed <code>get_the_title(get_the_ID());<\/code>en todo el c\u00f3digo, lo cual es bueno, pero todav\u00eda hay momentos en los que vemos c\u00f3digo escrito que accede a ciertos aspectos de la publicaci\u00f3n actual.<\/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=\"Uso de funciones en lugar de globales: get_post_field\" ><\/a><\/p>\n<p>Y cuestiono hasta qu\u00e9 punto es necesaria esa pr\u00e1ctica realmente dada la <code>get_post_field<\/code>funci\u00f3n. De la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">referencia del c\u00f3digo:<\/a><\/p>\n<blockquote>\n<p>Recupere datos de un campo de publicaci\u00f3n seg\u00fan el ID de la publicaci\u00f3n.<\/p>\n<p>Los ejemplos del campo de publicaci\u00f3n ser\u00e1n, &#8216;post_type&#8217;, &#8216;post_status&#8217;, &#8216;post_content&#8217;, etc. y se basar\u00e1n en la propiedad del objeto de publicaci\u00f3n o los nombres clave.<\/p>\n<\/blockquote>\n<p>Un ejemplo similar a esta funci\u00f3n ser\u00eda 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>funci\u00f3n en la que pasa una cadena espec\u00edfica a la funci\u00f3n para la que desea recuperar informaci\u00f3n, as\u00ed como una identificaci\u00f3n (o el objeto de publicaci\u00f3n completo, pero cuando la identificaci\u00f3n es suficiente, \u00bfpor qu\u00e9 no?).<\/p>\n<p>La diferencia aqu\u00ed es que recuperar\u00e1 el valor del campo solicitado o una cadena vac\u00eda (en lugar de un error, nulo o falso) cuando la solicitud falla. Esto significa que necesitar\u00edamos escribir una cl\u00e1usula condicional o de guardia para manejar tal caso.<\/p>\n<p>Entonces, un caso de uso completo de esta funci\u00f3n y el c\u00f3digo pueden requerir <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 par de funciones<\/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>Todo eso se puede unir <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f8ff8302439616caaf433f48aa85fe99#file-03-get-post-slug-example-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">as\u00ed:<\/a><\/p>\n<pre><code>&lt;?php\n\nif (hasPostSlug()) {\n  echo getPostSlug();\n}<\/code><\/pre>\n<p>El objetivo de compartir este tipo de c\u00f3digo es ayudar a compartir algunas de las alternativas que tenemos a las variables globales para compartir tambi\u00e9n las API que existen pero que pueden estar infrautilizadas.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <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 es una alternativa al uso de funciones en lugar de globales. Y es uno de los muchos que deber\u00edamos usar a medida que avanzamos.<\/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":[892,716,840,861],"tags":[1172],"class_list":["post-231255","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=231255"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231255\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/235955"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=231255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=231255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=231255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}