{"id":231611,"date":"2023-01-04T12:47:00","date_gmt":"2023-01-04T09:47:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231611"},"modified":"2022-12-25T21:42:56","modified_gmt":"2022-12-25T18:42:56","slug":"sobre-funciones-y-complementos-imprescindibles","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/sobre-funciones-y-complementos-imprescindibles\/","title":{"rendered":"Sobre funciones y complementos imprescindibles"},"content":{"rendered":"\n<p>He estado trabajando en un proyecto peque\u00f1o, m\u00e1s una aplicaci\u00f3n web que un sitio, que requiere el desarrollo de un tema personalizado y una funcionalidad estrechamente acoplada, pero muy espec\u00edfica.<\/p>\n<p>Este es un proyecto con un enfoque muy limitado (sobre el cual probablemente hablar\u00e9 en alg\u00fan momento en el futuro), pero al trabajar en \u00e9l, me oblig\u00f3 a volver un poco al aspecto de desarrollo de temas del desarrollo de WordPress.<\/p>\n<p>No, no estoy haciendo ning\u00fan dise\u00f1o, afortunadamente, pero tengo que trabajar en las personalizaciones de temas desde una perspectiva funcional. Sin embargo, al hacer esto, tuve que revisar lo requerido <code>functions.php<\/code>y algunas consideraciones que nunca antes hab\u00eda tenido.<\/p>\n<p>Adem\u00e1s, me hizo mirar m\u00e1s profundamente el uso de <code>mu-plugins<\/code>y preguntar cu\u00e1ndo son necesarios y por qu\u00e9 no los he usado m\u00e1s en el pasado (o incluso cuando uno realmente necesitar\u00eda usarlos).<\/p>\n<p>As\u00ed que voy a ponerme un poco po\u00e9tico al respecto.<\/p>\n<pre><code>TL;DR<\/code><\/pre>\n<p>Cuando estaba desarrollando el tema, <code>functions.php<\/code>se us\u00f3 para dos cosas (lo cual es problem\u00e1tico en s\u00ed mismo), pero a\u00fan as\u00ed:<\/p>\n<ol>\n<li>para habilitar o deshabilitar funciones en temas,<\/li>\n<li>para definir la funcionalidad espec\u00edfica del tema.<\/li>\n<\/ol>\n<p>El <a href=\"https:\/\/developer.wordpress.org\/themes\/basics\/theme-functions\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Manual del desarrollador de temas<\/a> dice:<\/p>\n<blockquote>\n<p>El <code>functions.php<\/code>archivo es donde agrega caracter\u00edsticas \u00fanicas a su tema de WordPress. Se puede usar para conectarse a las funciones principales de WordPress para hacer que su tema sea m\u00e1s modular, extensible y funcional.<\/p>\n<p>Funciones de temas, Manual para desarrolladores de temas<\/p>\n<\/blockquote>\n<p>Y lo entiendo, pero desde mi perspectiva y a medida que WordPress ha evolucionado, creo que <code>functions.php<\/code>deber\u00eda dedicarse a la funcionalidad espec\u00edfica del tema en t\u00e9rminos de cosas que se conectan directamente al n\u00facleo, como:<\/p>\n<ul>\n<li>funcionalidad del personalizador,<\/li>\n<li>funcionalidad del men\u00fa,<\/li>\n<li>registro de gui\u00f3n y estilo,<\/li>\n<li>y as\u00ed.<\/li>\n<\/ul>\n<p>Pero si hay algo que debe ejecutarse durante uno de los ganchos y est\u00e1 m\u00e1s en la l\u00ednea de la l\u00f3gica espec\u00edfica del dominio, entonces <strong>no<\/strong> pertenece a ese archivo.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e52f7b3b5.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-158759-61e6e52f7b3b5.png\" alt=\"Sobre funciones y complementos imprescindibles\" ><\/a><\/p>\n<p>Sin embargo, esto plantea una pregunta: \u00bfd\u00f3nde reside la funcionalidad espec\u00edfica del dominio?<\/p>\n<h3>Ingrese complementos imprescindibles<\/h3>\n<p>S\u00e9 que ver cosas como <code>inc<\/code>los directorios se est\u00e1 volviendo m\u00e1s com\u00fan, pero no me preocupan cuando hablo sobre el desarrollo de temas, especialmente cuando el desarrollo de temas no es mi enfoque y esa estructura de directorios en particular no es mi estilo.<\/p>\n<p>De todos modos, cuando se trata de soluciones altamente especializadas (donde una soluci\u00f3n es una combinaci\u00f3n de presentaci\u00f3n y funcionalidad estrictamente enfocada), empiezo a pensar en <code>mu-plugins<\/code>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e536dbfe7.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-158759-61e6e536dbfe7.png\" alt=\"Sobre funciones y complementos imprescindibles\" ><\/a><\/p>\n<p>Y la raz\u00f3n por la que no pienso en un complemento est\u00e1ndar de WordPress es porque generalmente est\u00e1n dise\u00f1ados para funcionar con cualquier tema y agregar funcionalidad. No es as\u00ed con <code>mu-plugins<\/code>.<\/p>\n<blockquote>\n<p>Los complementos de uso obligatorio (tambi\u00e9n conocidos como mu-plugins) son complementos instalados en un directorio especial dentro de la carpeta de contenido y que se habilitan autom\u00e1ticamente en todos los sitios de la instalaci\u00f3n.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/support\/article\/must-use-plugins\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Complementos imprescindibles<\/a>, WordPress.org<\/p>\n<\/blockquote>\n<p>As\u00ed que aqu\u00ed est\u00e1 mi proceso de pensamiento:<\/p>\n<ol>\n<li>Los temas son para presentaci\u00f3n.<\/li>\n<li>Los complementos son para la funcionalidad.<\/li>\n<li>Los complementos est\u00e1n dise\u00f1ados para usarse independientemente de un tema y en todo el sitio.<\/li>\n<li>Los complementos imprescindibles son complementos que est\u00e1n habilitados y en uso de forma predeterminada<\/li>\n<li>Por lo tanto, la l\u00f3gica espec\u00edfica del dominio para una soluci\u00f3n especializada debe residir en un complemento de uso obligatorio.<\/li>\n<\/ol>\n<p>Claro, se puede argumentar que algunos temas pueden requerir una funcionalidad de uso obligatorio, pero \u00bfno encaja eso con la idea de que la funcionalidad debe residir en un complemento de uso obligatorio?<\/p>\n<p>Independientemente, el enfoque que he estado siguiendo es este:<\/p>\n<ol>\n<li>La funcionalidad que asocia espec\u00edficamente las caracter\u00edsticas del tema con el n\u00facleo de WordPress entra en <code>functions.php<\/code>.<\/li>\n<li>La funcionalidad que es l\u00f3gica de dominio pero requiere que la soluci\u00f3n completa funcione reside en un archivo <code>mu-plugin<\/code>.<\/li>\n<\/ol>\n<p>En este punto <a href=\"https:\/\/tommcfarlin.com\/from-self-employment-to-employment-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">de mi carrera<\/a>, no hago mucho trabajo que se centre en nada excepto en el backend, pero en las raras oportunidades que tengo para expandir el trabajo que estoy haciendo, descubro que todav\u00eda estoy tratando de ser como anal\u00edtico y reflexivo sobre la forma en que estoy construyendo el proyecto.<\/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>Las funciones y los complementos de uso obligatorio son cosas que merecen consideraci\u00f3n, especialmente cuando se crean soluciones altamente especializadas.<\/p>\n","protected":false},"author":1,"featured_media":158760,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,914,800,840,861],"tags":[1172],"class_list":["post-231611","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-php-2","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231611","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=231611"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231611\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/158760"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=231611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=231611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=231611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}