{"id":229385,"date":"2022-11-11T10:11:00","date_gmt":"2022-11-11T07:11:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229385"},"modified":"2022-11-09T06:47:37","modified_gmt":"2022-11-09T03:47:37","slug":"compositor-para-wordpress-parte-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/compositor-para-wordpress-parte-1\/","title":{"rendered":"Compositor para WordPress, Parte 1"},"content":{"rendered":"\n<p>Bien, despu\u00e9s de hablar sobre todas las diversas bibliotecas que pueden ayudar a mejorar la calidad del c\u00f3digo de su trabajo, todav\u00eda surge una pregunta:<\/p>\n<p>\u00bfC\u00f3mo hacemos que estos proyectos funcionen en nuestra base de c\u00f3digo?<\/p>\n<p>En resumen, requiere <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Si nunca lo ha usado, he <a href=\"https:\/\/tommcfarlin.com\/setting-php-and-composer-in-mamp\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">escrito brevemente sobre \u00e9l<\/a> antes, pero tengo la intenci\u00f3n de brindarle los conceptos b\u00e1sicos de lo que necesita para comenzar a usarlo y las bibliotecas mencionadas anteriormente en su trabajo.<\/p>\n<p>Tanto en esta publicaci\u00f3n como en la siguiente, compartir\u00e9 c\u00f3mo configurar todo localmente de la forma m\u00e1s b\u00e1sica y luego c\u00f3mo se integra con Git para que puedas comenzar a usarlo en tu d\u00eda a d\u00eda.<\/p>\n<h2>Configuraci\u00f3n de Composer para WordPress<\/h2>\n<p>Hay mucha informaci\u00f3n que puede (y dir\u00eda que deber\u00eda ir en un archivo para Composer). Esto incluye cosas como la informaci\u00f3n del autor, PSR, informaci\u00f3n, etc. Pero eso realmente va m\u00e1s all\u00e1 del alcance de esta publicaci\u00f3n. En cambio, quiero compartir lo m\u00ednimo necesario sobre c\u00f3mo configurar y configurar esta informaci\u00f3n.<\/p>\n<h3>Un directorio de muestra<\/h3>\n<p>Suponga que, por un momento, est\u00e1 a punto de comenzar a trabajar en un complemento o algo relacionado con WordPress que requerir\u00e1 las diversas bibliotecas discutidas en la serie anterior. Y al configurar el directorio para esto, tendr\u00e1 muy pocos archivos. Puede haber un par de archivos PHP vac\u00edos, activos, etc. Tal vez se ver\u00e1 as\u00ed:<\/p>\n<p>Por supuesto, el ejemplo anterior ya est\u00e1 un poco por delante de c\u00f3mo se ver\u00e1 su trabajo porque:<\/p>\n<ul>\n<li>Hay un <code>composer.lock<\/code>\u00a0archivo que muestra que se ha ejecutado Composer,<\/li>\n<li>Tiene un <code>vendor<\/code>\u00a0directorio que muestra que las bibliotecas se han instalado a trav\u00e9s de Composer,<\/li>\n<li>Hay un <code>grumphp.yml<\/code>\u00a0archivo que define c\u00f3mo deber\u00eda funcionar GrumPHP (y lo cubrir\u00e9 m\u00e1s adelante) al olfatear el c\u00f3digo.<\/li>\n<\/ul>\n<p>Pero la esencia de lo anterior es la misma: tienes <code>composer.json<\/code>y define e incluye todo lo que necesitamos seg\u00fan la publicaci\u00f3n anterior. Entonces, \u00bfc\u00f3mo lo configuramos?<\/p>\n<h3>Configuraci\u00f3n del compositor<\/h3>\n<p>Primero, debe tener una idea de c\u00f3mo va a estructurar su complemento. Por ejemplo, tengo una configuraci\u00f3n de complemento como esta:<\/p>\n<ul>\n<li>Todos los archivos PHP residen en el <code>src<\/code>\u00a0directorio,<\/li>\n<li>Todos los archivos CSS, JavaScript, im\u00e1genes, etc., est\u00e1n en el <code>assets<\/code>\u00a0directorio,<\/li>\n<li>El <code>vendor<\/code>\u00a0directorio es para las cosas que se instalan a trav\u00e9s de Composer,<\/li>\n<li><code>views<\/code>\u00a0es lo que se usa en el front-end del proyecto.<\/li>\n<\/ul>\n<p>Por ejemplo:<\/p>\n<\/p>\n<p>En segundo lugar, en el directorio en cuesti\u00f3n, querr\u00e1 crear un archivo llamado <code>composer.json<\/code>. Esto se puede hacer a trav\u00e9s de la Terminal simplemente emitiendo un <code>touch<\/code>\u00a0comando, o puede crearlo en su IDE.<\/p>\n<p>Lo importante que hay que sacar de esto es que hay un <code>src<\/code>\u00a0directorio porque ese es el directorio que incluye nuestros archivos PHP y ese es el directorio que queremos haber rastreado.<\/p>\n<h3>Un archivo de compositor b\u00e1sico<\/h3>\n<p>Dicho esto, aqu\u00ed hay un <code>composer.json<\/code>archivo b\u00e1sico que puede usar en sus proyectos basado en la serie anterior y en lo que se <a href=\"https:\/\/gist.github.com\/tommcfarlin\/60ac0e1fba9fa152fc57622e3866d6dc\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comparte<\/a> a continuaci\u00f3n:<\/p>\n<pre><code>{\n  \"name\": \"pressware\/demo-wordpress-plugin\",\n  \"description\": \"This file is used to show how to configure a WordPress plugin using Composer.\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Pressware\": \"src\/\"\n    }\n  },\n  \"require-dev\": {\n    \"phpro\/grumphp\": \"^0.11.6\",\n    \"phpmd\/phpmd\": \"^2.6\",\n    \"phpunit\/phpunit\": \"5.7.21\",\n    \"nikic\/php-parser\": \"^3.0\",\n    \"sebastian\/phpcpd\": \"^3.0\",\n    \"povils\/phpmnd\": \"^1.1\",\n    \"squizlabs\/php_codesniffer\": \"^3.0\",\n    \"jakub-onderka\/php-parallel-lint\": \"^0.9.2\",\n    \"sensiolabs\/security-checker\": \"^4.0\"\n  }\n}<\/code><\/pre>\n<p>Mirando el archivo de arriba, aqu\u00ed est\u00e1 c\u00f3mo analizarlo:<\/p>\n<ol>\n<li>Las l\u00edneas 2 y 3 dan una peque\u00f1a descripci\u00f3n de lo que se trata el complemento. Esas son tambi\u00e9n otras \u00e1reas en este archivo para brindar m\u00e1s informaci\u00f3n sobre lo que se debe hacer.<\/li>\n<li>Las l\u00edneas 4 a 8 son importantes porque explican que estamos usando <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a> para la carga autom\u00e1tica y que todos los archivos se encuentran en el espacio de nombres de nivel superior <code>Pressware<\/code>y que los archivos PHP est\u00e1n en el <code>src<\/code>\u00a0directorio.<\/li>\n<li>Las l\u00edneas 9 a 18 cubren todos los archivos que cubrieron en la serie anterior.<\/li>\n<\/ol>\n<p>A continuaci\u00f3n, emita el siguiente comando en su terminal:<\/p>\n<p><code>$ composer install<\/code><\/p>\n<p>Y eso instalar\u00e1 estos paquetes.<\/p>\n<h2>\u00bfQu\u00e9 pasa con los compromisos?<\/h2>\n<p>Para asegurarse de que est\u00e1 eliminando y manejando correctamente las confirmaciones, es importante que configure GrumPHP para que est\u00e9 observando los archivos. Pero le echar\u00e9 un vistazo en el pr\u00f3ximo post.<\/p>\n<p>Mientras tanto, tal vez esta sea una buena oportunidad para configurar un complemento de demostraci\u00f3n y practicar con el c\u00f3digo anterior. Configurarlo correctamente la primera vez puede ser dif\u00edcil. Afortunadamente, muchos de los errores de salida son realmente f\u00e1ciles de entender, por lo que es relativamente sencillo resolverlos.<\/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>Esta es la primera de una serie de dos partes sobre c\u00f3mo configurar Composer para el desarrollo de WordPress para que pueda escribir c\u00f3digo de mayor calidad en su trabajo).<\/p>\n","protected":false},"author":1,"featured_media":166003,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[716,747,1015],"tags":[1172],"class_list":["post-229385","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-fuente-abierta","category-sitios-utiles","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229385","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=229385"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229385\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/166003"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}