{"id":230561,"date":"2022-12-09T17:59:00","date_gmt":"2022-12-09T14:59:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230561"},"modified":"2022-12-09T18:41:26","modified_gmt":"2022-12-09T15:41:26","slug":"no-sobredisene-la-solucion","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/no-sobredisene-la-solucion\/","title":{"rendered":"No sobredise\u00f1e la soluci\u00f3n"},"content":{"rendered":"\n<p>Si proviene de un entorno orientado a objetos o intenta construir todas sus soluciones para WordPress utilizando t\u00e9cnicas orientadas a objetos, entonces habr\u00e1 momentos en los que puede sentirse como si estuviera golpeando un clavo con un mazo.<\/p>\n<p>Por ejemplo, supongamos que alguien se acerca a usted y necesita que se desarrolle un complemento personalizado que funcione con un complemento de terceros, pero solo necesita hacer una cosa.<\/p>\n<p>\u00bfVale la pena tomarse el tiempo para crear una <strong><a href=\"https:\/\/wordpress.mediadoma.com\/es\/clases-abstractas-parte-2-clases-abstractas-e-interfaces\/\" title=\"interfaz\">interfaz<\/a><\/strong>, implementar dicha interfaz en una clase concreta, configurar <strong><a href=\"https:\/\/wordpress.mediadoma.com\/es\/organizacion-de-tipos-vistas-y-suscriptores-de-wordpress\/\" title=\"suscriptores\">suscriptores<\/a><\/strong>, <strong><a href=\"https:\/\/wordpress.mediadoma.com\/es\/una-nota-rapida-sobre-el-codigo-de-prueba-unitaria-en-proyectos-de-wordpress\/\" title=\"escribir pruebas unitarias\">escribir pruebas unitarias<\/a><\/strong>, etc.?<\/p>\n<p>Puedo ver el atractivo, pero generalmente digo que no. Si la esencia de lo que debe hacer tiene que incluir estilos o archivos JavaScript o ambos, \u00bfpor qu\u00e9 no confiar en las API nativas de WordPress y la programaci\u00f3n de procedimientos?<\/p>\n<h2>No sobredise\u00f1e<\/h2>\n<p>Digamos que un cliente potencial viene a ti que:<\/p>\n<ul>\n<li>est\u00e1 trabajando con un presupuesto muy ajustado,<\/li>\n<li>tiene un complemento de terceros que no encaja bien con su tema,<\/li>\n<li>solo necesita un estilo ligero,<\/li>\n<li>y tiene los fondos para contratarlo para el trabajo.<\/li>\n<\/ul>\n<p>Suponiendo que todo lo anterior sea cierto, entonces dir\u00eda que trabajar en la soluci\u00f3n parece bastante simple, \u00bfverdad? Necesitamos auditar el sitio para que podamos:<\/p>\n<ul>\n<li>determinar el esquema de color,<\/li>\n<li>encontrar los selectores necesarios para el CSS,<\/li>\n<li>luego comience a construir el complemento.<\/li>\n<\/ul>\n<p>Ahora, cuando se trata de hacer esto, todav\u00eda trato de emplear un pu\u00f1ado de mejores pr\u00e1cticas. Aunque tiendo a la programaci\u00f3n orientada a objetos, no siempre la uso ni siempre la recomiendo.<\/p>\n<p>En cambio, creo que usar una funci\u00f3n simple o un conjunto de funciones conectadas a la API de WordPress de manera procesal funciona bien. Sin embargo, eso no significa que no debamos intentar crear una estructura de organizaci\u00f3n de archivos s\u00f3lida porque nunca se sabe cu\u00e1ndo tendr\u00e1 que volver para mantener el proyecto.<\/p>\n<p>Con ese fin, esto es lo que normalmente hago:<\/p>\n<ul>\n<li>crear un directorio de activos para hojas de estilo y JavaScript (para ambos o uno de los otros, lo que sea necesario),<\/li>\n<li>crear un directorio <strong>src<\/strong> para el c\u00f3digo que ser\u00e1 responsable de conectarse a WordPress,<\/li>\n<li>agregue la LICENCIA habitual <strong>, L\u00c9AME<\/strong> y el archivo de arranque del complemento.<\/li>\n<\/ul>\n<p>El directorio resultante puede verse as\u00ed:<\/p>\n<p>A partir de ah\u00ed, ni siquiera me molesto con un cargador autom\u00e1tico. En su lugar, incluyo los archivos en el directorio de origen. Podr\u00eda iterar a trav\u00e9s de esos archivos en lugar de hacer algo <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/8d4e8a93a673d86f44d39c6e2893530e#file-00-bootstrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">como esto<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Acme Plugin Example\n *\n * @author    Tom McFarlin &lt;tom@pressware.co&gt;\n * @license   GPL-3.0+\n * @link      https:\/\/pressware.co\n * @since     1.0.0\n * @copyright 2018 Tom McFarlin\n *\n * @wordpress-plugin\n * Plugin Name: Acme Plugin Example\n * Description: Provides consistent styling across the site for certain elements.\n * Version:     1.0.0\n * Author:      Tom McFarlin\n * Author URI:  https:\/\/tommcfarlin.com\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\/\n\ninclude_once plugin_dir_path(__FILE__).'src\/AddStyles.php';\ninclude_once plugin_dir_path(__FILE__).'src\/AddScripts.php';\n<\/code><\/pre>\n<p>Pero eso podr\u00eda depender de cu\u00e1ndo y qu\u00e9 est\u00e9s haciendo.<\/p>\n<h2>esto es demasiado simple<\/h2>\n<p>Quiz\u00e1s. Aqu\u00ed est\u00e1 la cosa: cada vez que una persona se atrinchera en el uso de un determinado paradigma de programaci\u00f3n, dicha persona trata de aplicarlo en todas partes y trata de hacerlo todo el tiempo.<\/p>\n<p>No todos, pero muchos. Yo mismo incluido.<\/p>\n<p>Y cuando te encuentres sobredise\u00f1ando algo, \u00bfpor qu\u00e9 no dar un paso atr\u00e1s y tratar de simplificar un poco tu carga de trabajo?<\/p>\n<p>El problema a\u00fan est\u00e1 resuelto, y se hace de una manera que tiene una sobrecarga significativamente menor.<\/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>Si la esencia de lo que necesita hacer tiene que incluir estilos o archivos JavaScript o ambos, entonces no dise\u00f1e una soluci\u00f3n en exceso m\u00e1s de lo necesario.<\/p>\n","protected":false},"author":1,"featured_media":236233,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,800,861],"tags":[1172],"class_list":["post-230561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-php-2","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230561","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=230561"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230561\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/236233"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=230561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=230561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=230561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}