{"id":229689,"date":"2022-11-17T11:26:00","date_gmt":"2022-11-17T08:26:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229689"},"modified":"2022-11-09T15:57:23","modified_gmt":"2022-11-09T12:57:23","slug":"plantillas-de-wordpress-para-principiantes-madera","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/plantillas-de-wordpress-para-principiantes-madera\/","title":{"rendered":"Plantillas de WordPress para principiantes: Madera"},"content":{"rendered":"\n<p>Desde que habl\u00e9 sobre las plantillas de WordPress, he cubierto algunos motores diferentes que est\u00e1n disponibles:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/viniwrubleski\/jade-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jade-PHP<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/cjonasw\/wordpress-starter-theme-mustache\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Bigote<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/zach-adams\/sprig-foundation\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Puntilla<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jenssegers\/blade\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Espada<\/a><\/li>\n<\/ul>\n<p>Si est\u00e1 mirando a Moustache, es posible que le interesen los manillares, y si est\u00e1 mirando a Blade, le recomiendo que consulte a <a href=\"https:\/\/roots.io\/sage\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Sage<\/a> del equipo de <a href=\"https:\/\/roots.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Roots<\/a>.<\/p>\n<p>Pero para esta publicaci\u00f3n final, continuar\u00e9 con Timber, que es lo que present\u00e9 ayer. No me importa mucho cu\u00e1l se usa (ya que todos tienen sus compensaciones), siempre que sea consistente.<\/p>\n<h2>Plantillas de WordPress: uso de madera<\/h2>\n<p>Dicho esto, as\u00ed es como puede comenzar a usar <a href=\"https:\/\/www.upstatement.com\/timber\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Timber<\/a> en sus proyectos.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec006741.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-165381-61e77ec006741.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Para comenzar, deber\u00e1 estar familiarizado con Composer y deber\u00e1 tener una configuraci\u00f3n de entorno de desarrollo local. Si no tiene ninguno de estos o necesita ayuda, lo tengo cubierto:<\/p>\n<ol>\n<li><a href=\"https:\/\/tommcfarlin.com\/laravel-valet-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Usando Laravel para el desarrollo de WordPress<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/tag\/configuring-composer-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Configuraci\u00f3n de Composer para WordPress<\/a><\/li>\n<\/ol>\n<p>Una vez que haya seguido los pasos en cada una de esas gu\u00edas, deber\u00eda estar listo para comenzar. As\u00ed que esto es lo que vamos a hacer.<\/p>\n<h3>1 Configurar una instalaci\u00f3n local para madera<\/h3>\n<p>Usar\u00e9 Valet para esto, lo que significa que tendr\u00e9 un directorio con la \u00faltima versi\u00f3n de <a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress<\/a> (que es 4.8.3) instalada en su directorio.<\/p>\n<p>Esto significa que ya tendr\u00e9 una base de datos lista para funcionar:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec4380aa.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-165381-61e77ec4380aa.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Y voy a emitir los siguientes comandos para configurar Laravel y una instalaci\u00f3n segura (para imitar un entorno de prueba):<\/p>\n<pre><code>$ valet link\n$ valet secure<\/code><\/pre>\n<p>Para que pueda acceder al sitio en un navegador.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ec7806b6.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-165381-61e77ec7806b6.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Para aquellos que tienen curiosidad, estoy usando:<\/p>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress<\/a> 4.8.3<\/li>\n<li><a href=\"https:\/\/wordpress.org\/themes\/twentyfifteen\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">veintiquince<\/a><\/li>\n<li>Limpiar enlaces permanentes<\/li>\n<\/ul>\n<p>Y ning\u00fan otro complemento. Es solo una instalaci\u00f3n b\u00e1sica distinta de lo que ves arriba.<\/p>\n<p>En este punto, estoy listo para instalar Timber.<\/p>\n<h3>2 Instalaci\u00f3n de madera<\/h3>\n<p>Suponiendo que haya seguido las gu\u00edas anteriores para Valet y Composer, deber\u00eda estar listo para comenzar. Entonces, usando una terminal, navegue a su directorio de instalaci\u00f3n de WordPress.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ecb7040b.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-165381-61e77ecb7040b.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Luego emita el siguiente comando:<\/p>\n<pre><code>$ composer require timber\/timber<\/code><\/pre>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ece8223b.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-165381-61e77ece8223b.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Esto instalar\u00e1 Timber, pero a\u00fan deber\u00e1 actualizar el archivo functions.php de su tema para que use correctamente el cargador autom\u00e1tico de Composer.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed28264d.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-165381-61e77ed28264d.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Suponiendo que todo haya ido correctamente, deber\u00eda poder actualizar su sitio, navegar a cualquier publicaci\u00f3n, p\u00e1gina, etc. y nada deber\u00eda estar fuera de servicio.<\/p>\n<h3>3 Inicializar madera<\/h3>\n<p>Finalmente, es hora de usar Timber para reemplazar gran parte de lo que estamos acostumbrados a ver dentro del contexto de una plantilla de WordPress.<\/p>\n<p>Estoy optando por hacer esto dentro <strong>de content-page.php<\/strong> para que sea f\u00e1cil de seguir. Tenga en cuenta que el segmento de c\u00f3digo que estoy cambiando originalmente <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-04-content-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">se ve as\u00ed:<\/a><\/p>\n<pre><code>&lt;article id=\"post-&lt;?php the_ID(); ?&gt;\" &lt;?php post_class(); ?&gt;&gt;\n    &lt;?php\n        \/\/ Post thumbnail.\n        twentyfifteen_post_thumbnail();\n    ?&gt;\n\n    &lt;header class=\"entry-header\"&gt;\n        &lt;?php the_title( '&lt;h1 class=\"entry-title\"&gt;', '&lt;\/h1&gt;' ); ?&gt;\n    &lt;\/header&gt;&lt;!-- .entry-header --&gt;\n\n    &lt;div class=\"entry-content\"&gt;\n        &lt;?php the_content(); ?&gt;\n        &lt;?php\n            wp_link_pages( array(\n                'before'      =&gt; '&lt;div class=\"page-links\"&gt;&lt;span class=\"page-links-title\"&gt;'. __( 'Pages:', 'twentyfifteen' ). '&lt;\/span&gt;',\n                'after'       =&gt; '&lt;\/div&gt;',\n                'link_before' =&gt; '&lt;span&gt;',\n                'link_after'  =&gt; '&lt;\/span&gt;',\n                'pagelink'    =&gt; '&lt;span class=\"screen-reader-text\"&gt;'. __( 'Page', 'twentyfifteen' ). ' &lt;\/span&gt;%',\n                'separator'   =&gt; '&lt;span class=\"screen-reader-text\"&gt;, &lt;\/span&gt;',) );\n        ?&gt;\n    &lt;\/div&gt;&lt;!-- .entry-content --&gt;\n\n    &lt;?php edit_post_link( __( 'Edit', 'twentyfifteen' ), '&lt;footer class=\"entry-footer\"&gt;&lt;span class=\"edit-link\"&gt;', '&lt;\/span&gt;&lt;\/footer&gt;&lt;!-- .entry-footer --&gt;' ); ?&gt;\n\n&lt;\/article&gt;&lt;!-- #post-## --&gt;<\/code><\/pre>\n<p>En esta publicaci\u00f3n, no voy a volver a crear completamente lo que ve arriba, pero voy a comenzar con lo que se necesita para comenzar a usar un motor de plantillas dentro del contexto de una base PHP.<\/p>\n<p>Primero, necesitar\u00e1 crear una plantilla que se pueda aplicar a la p\u00e1gina de muestra en una instalaci\u00f3n est\u00e1ndar de WordPress. Llam\u00e9 al m\u00edo <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-05-template-timber-page-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">template-timber-page.php<\/a> y se ve as\u00ed:<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Template Name: Timber Template\n * Description: Replaces the standard page with a Timber template.\n *\/\n\n$timber  = new TimberTimber();\n$context = Timber::get_context();\n$post    = new TimberPost();\n\n$context['post'] = $post;\nTimber::render(\n  array( 'content-'. $post-&gt;post_name. '.twig', 'page.twig' ),\n  $context\n);\n<\/code><\/pre>\n<p>En el c\u00f3digo anterior, esto es lo que sucede:<\/p>\n<ol>\n<li>\u00a0Estoy instanciando el objeto Timber.<\/li>\n<li>Entonces, obtengo un contexto de madera. El contexto contiene mucha informaci\u00f3n que es \u00fatil dentro de la plantilla (o el sitio) dependiendo de d\u00f3nde est\u00e9 usando su plantilla.<\/li>\n<li>Despu\u00e9s de eso, estoy agarrando un TimberPost que es esencialmente una extensi\u00f3n de una publicaci\u00f3n de WordPress. Tiene los datos de WP_Post pero lo pone a disposici\u00f3n de nuestras plantillas.<\/li>\n<li>A continuaci\u00f3n, configuro el \u00edndice de <strong>publicaci\u00f3n de la matriz<\/strong> <strong>$context<\/strong> con una referencia a Timber Post (que he llamado <strong>$post<\/strong> ).<\/li>\n<li>Finalmente, le digo a Timber que represente una p\u00e1gina llamada <strong>content-sample-page.twig<\/strong> usando el contexto dado.<\/li>\n<\/ol>\n<p>Aqu\u00ed es donde es importante crear el archivo twig real (que es la extensi\u00f3n del archivo de plantilla de Timber). As\u00ed que cre\u00e9 <strong>content-sample-page.twig<\/strong> y se ve <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-06-cotent-sample-page-twig\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">as\u00ed:<\/a><\/p>\n<pre><code>{% block content %}\n  &lt;article id=\"post-{{post.ID}}\" class=\"{{body_class}}\"&gt;\n\n    &lt;header class=\"entry-header\"&gt;\n      &lt;h1 class=\"article-h1\"&gt;{{post.title}}&lt;\/h1&gt;\n    &lt;\/header&gt;&lt;!-- .entry-header --&gt;\n\n    &lt;div class=\"entry-content\"&gt;\n        {{post.content}}\n    &lt;\/div&gt;&lt;!-- .entry-content --&gt;\n\n  &lt;\/article&gt;&lt;!-- #post-## --&gt;\n{% endblock %}\n<\/code><\/pre>\n<p>Despu\u00e9s de instanciar el objeto Timber y luego reemplazar el c\u00f3digo que ve arriba, notar\u00e1 que el c\u00f3digo se lee un poco diferente (aunque no del todo dif\u00edcil de seguir).<\/p>\n<h3>4 Aplicaci\u00f3n de la plantilla<\/h3>\n<p>Para aplicar la plantilla, vaya a <strong>P\u00e1ginas<\/strong> en WordPress. Ubique la <strong>p\u00e1gina de muestra y<\/strong> luego, en el men\u00fa desplegable de plantillas, elija la que acabamos de crear usando el t\u00edtulo de arriba:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77ed87f4dc.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-165381-61e77ed87f4dc.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Una vez hecho esto, puede ver la publicaci\u00f3n. Notar\u00e1s que se ve un poco desnudo en comparaci\u00f3n con lo que estamos acostumbrados a ver:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165381-61e77eddccec8.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-165381-61e77eddccec8.png\" alt=\"Plantillas de WordPress para principiantes: Madera\" ><\/a><\/p>\n<p>Pero tiene una idea general de c\u00f3mo podemos usar el contexto para acceder a muchas de las mismas propiedades que estamos acostumbrados a ver en WordPress sin tener que ensuciar el c\u00f3digo con marcado y PHP y cualquier otra cosa que estemos acostumbrados. a usar<\/p>\n<h2>M\u00e1s recursos<\/h2>\n<p>S\u00e9 que este es predominantemente un curso intensivo en plantillas y no cubre tanto como podr\u00eda. Como esta publicaci\u00f3n se acerca a las 1000 palabras, necesito trazar la l\u00ednea en alguna parte, as\u00ed que opt\u00e9 por hacerlo aqu\u00ed.<\/p>\n<p>Sin embargo, esto no significa que haya terminado de discutirlo. Planeo volver a temas m\u00e1s avanzados sobre las plantillas en macetas futuras.<\/p>\n<p>Pero si est\u00e1 interesado, le recomiendo que siga la Gu\u00eda de <a href=\"https:\/\/timber.github.io\/docs\/getting-started\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">inicio<\/a> para Timber y el proyecto en <a href=\"https:\/\/github.com\/timber\/timber\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a>.<\/p>\n<p>Esto al menos le dar\u00e1 un punto de partida desde el cual puede progresar a\u00fan m\u00e1s en sus esfuerzos por crear un c\u00f3digo m\u00e1s limpio y separado l\u00f3gicamente de lo que estamos acostumbrados a ver en WordPress.<\/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>El uso de un motor como Timber puede ayudar a mejorar la separaci\u00f3n de preocupaciones en las plantillas de WordPress. He aqu\u00ed un ejemplo de c\u00f3mo empezar.<\/p>\n","protected":false},"author":1,"featured_media":165382,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[924,892,840,861],"tags":[1172],"class_list":["post-229689","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asignaturas","category-codigo","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229689","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=229689"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/165382"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}