{"id":233889,"date":"2023-02-25T11:01:00","date_gmt":"2023-02-25T08:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233889"},"modified":"2022-11-11T13:01:12","modified_gmt":"2022-11-11T10:01:12","slug":"tutorial-de-temas-de-wordpress-para-principiantes-parte-10-agregar-mas-plantillas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/tutorial-de-temas-de-wordpress-para-principiantes-parte-10-agregar-mas-plantillas\/","title":{"rendered":"Tutorial de temas de WordPress para principiantes \u2013 Parte 10: Agregar m\u00e1s plantillas"},"content":{"rendered":"\n<p>En esta lecci\u00f3n del tutorial de temas de WordPress para principiantes, profundizaremos m\u00e1s en las plantillas. Aprenderemos sobre las partes de la plantilla y las implementaremos para su reutilizaci\u00f3n. Y agregaremos m\u00e1s plantillas predeterminadas de WordPress a nuestro tema.<\/p>\n<p>Pero antes de comenzar a agregar m\u00e1s archivos de plantilla, debemos saber por qu\u00e9 deber\u00edamos preocuparnos por <strong>las partes de la plantilla<\/strong>.<\/p>\n<h2>Piezas de plantilla: bloques de construcci\u00f3n m\u00e1s flexibles<\/h2>\n<p>Las partes de la plantilla funcionan exactamente como <code>get_header()<\/code>las <code>get_footer()<\/code>que <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-2-building-blocks\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aprendimos en la parte 2<\/a>, pero no se limitan a estos archivos. \u00a1Puedes usar partes de plantilla para cualquier archivo que quieras!<\/p>\n<p>Los temas suelen utilizar una parte de plantilla para las publicaciones en bucle. Por lo general, muchas plantillas, como categor\u00eda, archivo y resultados de b\u00fasqueda, generalmente muestran cada publicaci\u00f3n en un bucle de la misma manera. Por lo tanto, es una muy buena idea separar la salida del bucle posterior en un solo archivo. De esta manera no tienes que repetirlo en cada plantilla.<\/p>\n<p>\u00a1Vamos a &quot;convertir&quot; parte de nuestro c\u00f3digo existente en partes de plantilla antes de comenzar a crear m\u00e1s plantillas!<\/p>\n<h2>Creaci\u00f3n de una parte de plantilla de bucle posterior<\/h2>\n<p>Cree un nuevo archivo vac\u00edo en nuestra carpeta de temas; llamado <code>content-loop.php<\/code>_ Puedes nombrar las partes de la plantilla como quieras. Pero no puede nombrarlos de la misma manera que cualquiera de <a href=\"https:\/\/codex.wordpress.org\/File:Template_Hierarchy.png#file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">las plantillas definidas de WordPress<\/a>. En nuestro <code>index.php<\/code>, localiza todo lo que tengas dentro del loop, rec\u00f3rtalo y p\u00e9galo dentro <code>content-loop.php<\/code>.<\/p>\n<p>Dentro del bucle ahora vac\u00edo en <code>index.php<\/code>, use la llamada de funci\u00f3n <code>get_template_part()<\/code>y defina su archivo de parte de plantilla como par\u00e1metro (sin la <code>.php<\/code>extensi\u00f3n). As\u00ed es como deber\u00eda verse en ambos archivos:<\/p>\n<pre><code>...\n    while (have_posts()): the_post(); \n        get_template_part('content-loop');\n    endwhile;\n    the_posts_pagination();\n...<\/code><\/pre>\n<pre><code>&lt;article &lt;?php post_class(); ?&gt;&gt;\n    &lt;h2&gt;&lt;a href=\"&lt;?php the_permalink(); ?&gt;\" title=\"&lt;?php the_title(); ?&gt;\"&gt;&lt;?php the_title(); ?&gt;&lt;\/a&gt;&lt;\/h2&gt;\n    &lt;?php if (has_post_thumbnail()) {\n        the_post_thumbnail();\n    } ?&gt;\n    &lt;?php the_excerpt(); ?&gt;\n    &lt;?php the_category(); ?&gt;\n&lt;\/article&gt;<\/code><\/pre>\n<p>Si actualiza su p\u00e1gina principal, no deber\u00eda ver absolutamente ninguna diferencia.<\/p>\n<p>\u00a1Excelente! Ahora que el nuestro <code>index.php<\/code>est\u00e1 limpio y ordenado, podemos usarlo como base para duplicar en m\u00e1s plantillas. A continuaci\u00f3n, explicar\u00e9 c\u00f3mo agregar una plantilla de categor\u00eda y una plantilla de resultados de b\u00fasqueda, pero lo animo a crear m\u00e1s plantillas para tener m\u00e1s control sobre el dise\u00f1o de su tema.<\/p>\n<h2>Agregar una plantilla de categor\u00eda<\/h2>\n<p>Si vuelve a consultar la <a href=\"https:\/\/codex.wordpress.org\/File:Template_Hierarchy.png#file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jerarqu\u00eda de plantillas de WordPress<\/a>, puede ver que para las categor\u00edas de publicaciones, WordPress buscar\u00e1 la plantilla denominada <code>category.php<\/code>. Crearemos ese primero.<\/p>\n<p>En la carpeta de su tema, haga una copia del <code>index.php<\/code>archivo y cambie el nombre de la copia <code>category.php<\/code>.<\/p>\n<p>Y eso es. \u00a1B\u00e1sicamente has terminado&#8230;!<\/p>\n<p>Sin embargo, agregaremos un detalle; queremos mostrar un t\u00edtulo que nos diga que estamos en una p\u00e1gina de categor\u00eda para publicaciones en la categor\u00eda llamada X. WordPress tiene una funci\u00f3n para esto que puede usar en todas las plantillas de archivo (categor\u00eda, etiquetas, archivos de fecha), <code>the_archive_title<\/code>. Vamos a agregarlo antes del bucle, dentro de una <code>&lt;h1&gt;<\/code>etiqueta.<\/p>\n<pre><code>&lt;?php get_header(); ?&gt;\n&lt;h1&gt;&lt;?php the_archive_title(); ?&gt;&lt;\/h1&gt;\n&lt;?php\nif (have_posts()) {\n...<\/code><\/pre>\n<p>Si ve una p\u00e1gina de categor\u00eda de publicaci\u00f3n, deber\u00eda ver algo como esto, con el t\u00edtulo de archivo &quot;Categor\u00eda:&quot;. PD: si desea cambiar la salida del t\u00edtulo del archivo (por ejemplo, que no muestre &quot;Categor\u00eda:&quot;), puede agregar un filtro a <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/get_the_archive_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_the_archive_title<\/a>. La p\u00e1gina de documentaci\u00f3n muestra un gran ejemplo de c\u00f3mo hacer precisamente eso.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151635-61e4cd7239f1b.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-151635-61e4cd7239f1b.png\" alt=\"Tutorial de temas de WordPress para principiantes \u2013 Parte 10: Agregar m\u00e1s plantillas\" ><\/a><\/p>\n<p>Bueno, \u00a1eso fue f\u00e1cil! Vamos a manejar la plantilla de resultados de b\u00fasqueda a continuaci\u00f3n.<\/p>\n<h2>Adici\u00f3n de una plantilla de resultados de b\u00fasqueda<\/h2>\n<p>El procedimiento es exactamente el mismo que hicimos para las plantillas de categor\u00eda. Esta vez, haga una copia de <code>category.php<\/code>y cambie el nombre de la copia a <code>search.php<\/code>.<\/p>\n<p>Todo lo que necesitamos arreglar es el t\u00edtulo. Lamentablemente, la funci\u00f3n de t\u00edtulo de archivo que usamos en la plantilla de categor\u00eda no funciona muy bien para la plantilla de resultados de b\u00fasqueda. De hecho, no existe una funci\u00f3n simple en WordPress que genere un t\u00edtulo para nosotros.<\/p>\n<p>Pero podemos hacer una f\u00e1cilmente nosotros mismos y, al mismo tiempo, demostrar\u00e9 c\u00f3mo generar una variable din\u00e1mica y seguir manteniendo el texto traducible.<\/p>\n<p>PHP tiene dos funciones \u00fatiles <code>printf()<\/code>y <code>sprintf()<\/code>. Hacen lo mismo, excepto que <code>printf<\/code>lo emiten (como echo) y <code>sprintf<\/code>lo devuelven, por lo que podemos almacenarlo en una variable. Despu\u00e9s de colocar el texto como primeros par\u00e1metros, podemos agregar variables din\u00e1micas como argumentos, que luego se inyectan en el texto. Dentro de ellos, podemos usar las funciones de texto traducible <code>__()<\/code>y <code>_e()<\/code>. Le recomiendo que lea un poco sobre c\u00f3mo funciona <a href=\"https:\/\/www.php.net\/manual\/en\/function.printf.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">printf<\/a> o <a href=\"https:\/\/www.php.net\/manual\/en\/function.sprintf.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sprintf<\/a>, ya que no entrar\u00e9 en m\u00e1s detalles aqu\u00ed.<\/p>\n<p>WordPress ofrece una funci\u00f3n simple para obtener la cadena que se busc\u00f3; <code>get_search_query()<\/code>. Dicho esto, reemplacemos la funci\u00f3n de t\u00edtulo del archivo con esto;<\/p>\n<pre><code>&lt;h1&gt;&lt;?php printf(__('Search: %s', 'wptutorial'), get_search_query()); ?&gt;&lt;\/h1&gt;<\/code><\/pre>\n<p>Lo que hace el c\u00f3digo anterior es de adentro hacia afuera; definiendo un texto traducible &quot;Buscar: %s&quot; que se coloca dentro de un texto <code>printf<\/code>que repite la cadena y reemplaza la constante de cadena (<code>%s<\/code>) con el segundo argumento; <code>get_search_query()<\/code>que es<\/p>\n<p>Como resultado, obtenemos un t\u00edtulo como este cuando buscamos \u00aber&quot;:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151635-61e4cd7331b74.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-151635-61e4cd7331b74.png\" alt=\"Tutorial de temas de WordPress para principiantes \u2013 Parte 10: Agregar m\u00e1s plantillas\" ><\/a><\/p>\n<p>\u00a1Agradable! Otra plantilla hecha. En cuanto a la \u00faltima parte de esta lecci\u00f3n, entraremos en nuestra plantilla de publicaci\u00f3n \u00fanica y agregaremos algo muy com\u00fan en WordPress; la plantilla de comentarios.<\/p>\n<h2>Agregar una plantilla de comentarios a una sola publicaci\u00f3n<\/h2>\n<p>En nuestro <code>single.php<\/code>, despu\u00e9s del art\u00edculo de publicaci\u00f3n, queremos mostrar los comentarios. Los comentarios deben generar una lista de comentarios anteriores y un formulario para agregar un nuevo comentario.<\/p>\n<p>La plantilla de comentarios es un archivo de plantilla que puede agregar a su tema, pero WordPress en realidad tiene su propia salida de plantilla de comentarios predeterminada. Si no tiene <code>comments.php<\/code>en su tema, solicitar la plantilla de comentarios devolver\u00e1 la salida predeterminada de WordPress. Esto es lo que haremos en este tutorial.<\/p>\n<p>Solo queremos llamar a la plantilla de comentarios si la publicaci\u00f3n tiene comentarios activados (es una configuraci\u00f3n para cada publicaci\u00f3n y una configuraci\u00f3n global del sitio). Entonces, agregamos una verificaci\u00f3n if para verificar si los comentarios est\u00e1n permitidos <code>comments_open()<\/code>y si devuelve verdadero, solicitamos una plantilla de comentarios con <code>comments_template()<\/code>. Tenga en cuenta que todo esto debe suceder dentro del ciclo. Lo agregu\u00e9 despu\u00e9s del final de <code>&lt;\/article&gt;<\/code>, justo antes de que se cierre el ciclo.<\/p>\n<pre><code>...\n        &lt;p&gt;&lt;?php _e('Author', 'wptutorial'); ?&gt;: &lt;?php the_author(); ?&gt;&lt;\/p&gt;\n    &lt;\/article&gt;\n    &lt;?php \n    if (comments_open()) {\n        comments_template();\n    }\n    endwhile;\n} else {\n    ?&gt;&lt;p&gt;&lt;?php _e('No posts, sorry.', 'wptutorial'); ?&gt;&lt;\/p&gt;&lt;?php\n...<\/code><\/pre>\n<p>Si visita una sola publicaci\u00f3n que ha permitido comentarios (agregu\u00e9 un comentario solo para mostrarle la lista de comentarios tambi\u00e9n); obtendr\u00e1s esta hermosa (ejem) plantilla de comentarios predeterminada:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151635-61e4cd7412986.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-151635-61e4cd7412986.png\" alt=\"Tutorial de temas de WordPress para principiantes \u2013 Parte 10: Agregar m\u00e1s plantillas\" ><\/a><\/p>\n<p>Ahora, puede (y a menudo se recomienda) crear uno propio <code>comments.php<\/code>en su tema, que anular\u00e1 la salida predeterminada de WordPress. Sin embargo, no voy a crear una plantilla de comentarios en este tutorial, ya que la salida predeterminada de WordPress funciona bien siempre y cuando le apliques el estilo adecuado. Si inspecciona el HTML, hay muchos contenedores y clases disponibles.<\/p>\n<h2>Documentaci\u00f3n sobre los m\u00e9todos utilizados<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_template_part\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_template_part<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_archive_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">el_archivo_t\u00edtulo<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_search_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_search_query<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/comments_open\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comentarios_abiertos<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/comments_template\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comentarios_plantilla<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta lecci\u00f3n, aprenderemos sobre las partes de la plantilla y crearemos m\u00e1s plantillas para nuestro tema de WordPress. Tambi\u00e9n agregaremos una plantilla de comentarios a la vista de publicaci\u00f3n \u00fanica.<\/p>\n","protected":false},"author":1,"featured_media":223663,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[924,892,892,716,716,831,914,1110,914,831,924,840,840,861,861],"tags":[1172],"class_list":["post-233889","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asignaturas","category-codigo","category-desarrollador","category-guia-para-principiantes","category-otro","category-n-a","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233889","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=233889"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233889\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/223663"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}