{"id":233315,"date":"2023-02-11T17:49:00","date_gmt":"2023-02-11T14:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233315"},"modified":"2022-11-10T20:26:38","modified_gmt":"2022-11-10T17:26:38","slug":"tutorial-de-tema-de-wordpress-para-principiantes-parte-11-plantillas-de-pagina-personalizadas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/tutorial-de-tema-de-wordpress-para-principiantes-parte-11-plantillas-de-pagina-personalizadas\/","title":{"rendered":"Tutorial de tema de WordPress para principiantes \u2013 Parte 11: Plantillas de p\u00e1gina personalizadas"},"content":{"rendered":"\n<p>En esta lecci\u00f3n del tutorial de temas de WordPress para principiantes, aprendemos sobre las plantillas de p\u00e1gina, qu\u00e9 son, c\u00f3mo crearlas y las mejores pr\u00e1cticas. Haremos una plantilla de ancho completo como ejemplo. En el camino, tambi\u00e9n agregamos una clase al cuerpo preguntando si la p\u00e1gina est\u00e1 usando una plantilla de p\u00e1gina espec\u00edfica.<\/p>\n<h2>\u00bfQu\u00e9 son las plantillas de p\u00e1gina?<\/h2>\n<p>Las plantillas de p\u00e1gina son \u00fatiles para los casos en los que desea un dise\u00f1o o configuraci\u00f3n diferente para una p\u00e1gina espec\u00edfica. Ejemplos comunes de usos de plantillas de p\u00e1gina son enumerar publicaciones en un tipo de publicaci\u00f3n personalizada (por ejemplo, cartera, libros o servicios), tener un contenido o dise\u00f1o completamente diferente (por ejemplo, columnas internas) o simplemente hacer una p\u00e1gina de ancho completo (sin barra lateral).<\/p>\n<p>La usabilidad de las plantillas de p\u00e1gina ha disminuido despu\u00e9s de la versi\u00f3n 5.x de WordPress (Gutenberg). El nuevo editor de Gutenberg permite una gran flexibilidad para crear tales p\u00e1ginas sin necesidad de plantillas de p\u00e1gina. Independientemente, aprenderemos c\u00f3mo agregar una plantilla de p\u00e1gina personalizada a nuestro tema.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153948-61e516ac9d3c4.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-153948-61e516ac9d3c4.png\" alt=\"Tutorial de tema de WordPress para principiantes \u2013 Parte 11: Plantillas de p\u00e1gina personalizadas\" ><\/a><\/p>\n<p>Dentro del metabox &quot;Atributos de p\u00e1gina&quot; para p\u00e1ginas es donde aparece la opci\u00f3n de plantilla de p\u00e1gina. Pero la opci\u00f3n de plantilla solo aparecer\u00e1 si el tema activo tiene al menos una plantilla de p\u00e1gina.<\/p>\n<p>Las plantillas de p\u00e1gina tambi\u00e9n se pueden usar para publicaciones y tipos de publicaciones personalizadas. Despu\u00e9s de WordPress 4.7 y versiones posteriores, puede definir para qu\u00e9 tipos de publicaci\u00f3n desea que est\u00e9 disponible la plantilla. WordPress agregar\u00e1 autom\u00e1ticamente el metabox de &quot;Atributos de p\u00e1gina&quot; requerido a esos tipos de publicaciones.<\/p>\n<h2>Nombramiento y ubicaci\u00f3n de la plantilla de p\u00e1gina<\/h2>\n<p>Para empezar, normalmente har\u00eda una copia de cualquier archivo de plantilla que se parezca m\u00e1s a lo que desea lograr con la plantilla de p\u00e1gina. En la mayor\u00eda de los casos es <code>page.php<\/code>. En cuanto al nombre de la plantilla de su p\u00e1gina, depende de usted. Pero hay algunas reglas y algo de sentido com\u00fan.<\/p>\n<p>Es tentador simplemente nombrar la plantilla de su p\u00e1gina, por ejemplo, <code>page-books.php<\/code>para una plantilla que enumera un tipo de publicaci\u00f3n personalizada libros. \u00a1 Nunca prefije su plantilla de p\u00e1gina con &#8216; <code>page-<\/code>&#8216;! Si recuerda <a href=\"https:\/\/codex.wordpress.org\/File:Template_Hierarchy.png#file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la jerarqu\u00eda de plantillas<\/a> de WordPress, WordPress buscar\u00e1 <code>page-&lt;slug&gt;.php<\/code>antes de intentarlo <code>page.php<\/code>y los usuarios de su tema podr\u00edan encontrar un comportamiento inesperado.<\/p>\n<p>Una buena pr\u00e1ctica es prefijar la plantilla de su p\u00e1gina con algo que no sea parte de los nombres de las plantillas de p\u00e1gina de WordPress. Por ejemplo &#8216; <code>pagetemplate-'<\/code>, &#8216; <code>pt-<\/code>&#8216;, o simplemente el nombre completo &#8216; <code>fullwidth-template.php<\/code>&#8216;. Tambi\u00e9n es una buena pr\u00e1ctica mantenerlos en una subcarpeta; <code>\/page-templates\/<\/code>sin embargo, esto no es bueno si desea que su tema est\u00e9 disponible para extenderse con un tema secundario. Un tema secundario no puede anular las plantillas de p\u00e1gina que se colocan en una subcarpeta en el tema principal.<\/p>\n<p>Una vez que haya decidido un patr\u00f3n de nombres, sigamos adelante y creemos una plantilla de p\u00e1gina.<\/p>\n<h2>Creaci\u00f3n de una plantilla de p\u00e1gina<\/h2>\n<p>Haz una copia <code>page.php<\/code>y c\u00e1mbiale el nombre a <code>pagetemplate-fullwidth.php<\/code>. Para convertirlo en una plantilla de p\u00e1gina, solo necesita agregar un comentario al principio que le dice a WordPress que se trata de una plantilla de p\u00e1gina:<\/p>\n<pre><code>&lt;?php \n\/*\nTemplate Name: Fullwidth \n*\/\nget_header(); ?&gt;\n&lt;?php \nif (have_posts()) {\n...<\/code><\/pre>\n<p>Todo lo que necesita es un comentario al principio del archivo, con &quot;Nombre de plantilla:&quot; y el nombre de su plantilla despu\u00e9s. \u00a1Eso es todo! Vaya a administraci\u00f3n, edite una p\u00e1gina y deber\u00eda ver la opci\u00f3n para elegir &quot;Ancho completo&quot; como plantilla.<\/p>\n<p>Mencion\u00e9 que en WordPress 4.7 puedes definir para qu\u00e9 tipos de publicaciones quieres que est\u00e9 disponible la plantilla de p\u00e1gina. En este momento, solo est\u00e1 disponible para las p\u00e1ginas, pero \u00bfquieres la opci\u00f3n de hacer publicaciones de ancho completo tambi\u00e9n? En ese caso, agregue &quot;Tipo de publicaci\u00f3n de plantilla:&quot; dentro del mismo bloque de comentarios y defina sus tipos de publicaci\u00f3n separados por comas. Por ejemplo, para que est\u00e9 disponible tanto para publicaciones como para p\u00e1ginas;<\/p>\n<pre><code>&lt;?php \n\/*\nTemplate Name: Fullwidth \nTemplate Post Type: post, page\n*\/\nget_header(); ?&gt;\n&lt;?php \nif (have_posts()) {\n...<\/code><\/pre>\n<p>Edite una publicaci\u00f3n y deber\u00eda ver un nuevo metabox &quot;Atributos de publicaci\u00f3n&quot; donde puede elegir la plantilla de ancho completo. \u00a1Agradable!<\/p>\n<h2>Cambiando el c\u00f3digo en nuestra plantilla de p\u00e1gina<\/h2>\n<p>Ahora editemos la plantilla de la p\u00e1gina para que realmente haga algo diferente a la vista de una sola p\u00e1gina. Eliminemos la solicitud de la plantilla de la barra lateral: (lo coment\u00e9 para hacerlo m\u00e1s visible, pero puede eliminar la l\u00ednea).<\/p>\n<pre><code>...\n    ?&gt;&lt;p&gt;&lt;?php _e('No posts, sorry.', 'wptutorial'); ?&gt;&lt;\/p&gt;&lt;?php\n}\n\/\/get_sidebar(); \nget_footer(); ?&gt;<\/code><\/pre>\n<p>Hagamos una cosa m\u00e1s para que nuestra plantilla de p\u00e1gina sea m\u00e1s f\u00e1cil de dise\u00f1ar. Cuando agrega CSS, a menudo necesita saber si la p\u00e1gina tiene una barra lateral o no, para ajustar las columnas o el dise\u00f1o. \u00bfRecuerdas <code>body_class<\/code>que proporciona un mont\u00f3n de clases \u00fatiles para el elemento del cuerpo? \u00bfQu\u00e9 pasa si agregamos una clase personalizada en el cuerpo que nos dice si la p\u00e1gina actual tiene una barra lateral o no?<\/p>\n<h2>Filtrar en<code>body_class<\/code><\/h2>\n<p>Nota: es posible que haya notado que cualquier p\u00e1gina o publicaci\u00f3n que use una plantilla de p\u00e1gina ya tiene una clase de cuerpo espec\u00edfica; \u00abplantilla-de-p\u00e1gina-&quot; \u2013 en nuestro ejemplo <code>\"page-template-pagetemplate-fullwidth\"<\/code>. Es una clase bastante larga y, adem\u00e1s, queremos que nuestro tema sea m\u00e1s flexible y permitir el ancho completo en otras plantillas adem\u00e1s de las que usan la plantilla de p\u00e1gina. Por ejemplo, normalmente no quieres una barra lateral en la p\u00e1gina principal, \u00bfverdad?<\/p>\n<p>Nota: Esto solo agrega una clase al cuerpo para que el estilo sea m\u00e1s f\u00e1cil, en realidad no deshabilita la salida de la barra lateral. Tienes que recordar eliminar el <code>get_sidebar()<\/code>lugar donde no lo quieras.<\/p>\n<p>Agreguemos un filtro para <code>body_class<\/code>agregar una clase de barra lateral personalizada en nuestro <code>functions.php<\/code>, para que luego pueda agregar m\u00e1s en otros casos en los que no desea la barra lateral. WordPress tiene una buena etiqueta condicional para verificar si una plantilla de p\u00e1gina est\u00e1 en uso; <code>is_page_template()<\/code>donde pones el nombre de la plantilla de tu p\u00e1gina como par\u00e1metro. Queremos agregar una clase si esto no es cierto, entonces agregamos el reverso con \u00ab!\u00bb:<\/p>\n<pre><code>add_filter('body_class', 'wptutorial_body_class_filter');\nfunction wptutorial_body_class_filter($classes) {\n    if (!is_page_template('pagetemplate-fullwidth.php')) {\n        $classes[] = 'has-sidebar';\n    }\n    return $classes;\n}<\/code><\/pre>\n<p>Lo m\u00e1s probable es que, mientras desarrolla las plantillas, de vez en cuando se encuentre con plantillas a las que no desee agregar la clase de la barra lateral y, a medida que avanza, agregue esos casos dentro de este archivo <code>if<\/code>. Por ejemplo, si no desea la clase de barra lateral en la p\u00e1gina principal, puede agregar <code>!is_front_page()<\/code>. Esto agregar\u00e1 la clase &#8216;has-sidebar&#8217; a todas las p\u00e1ginas excepto a la portada y la plantilla de p\u00e1gina:<\/p>\n<pre><code>if (!is_front_page() &amp;&amp; !is_page_template('pagetemplate-fullwidth.php'))<\/code><\/pre>\n<p>Depende de usted cu\u00e1ntas plantillas de p\u00e1gina desea y qu\u00e9 deben contener. Esta fue solo una simple introducci\u00f3n. Si est\u00e1 interesado en c\u00f3mo consultar otras publicaciones dentro de las plantillas de una p\u00e1gina, eche un vistazo al <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-12-custom-post-queries\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">siguiente paso<\/a>.<\/p>\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 de tema para principiantes, aprendemos sobre plantillas de p\u00e1gina personalizadas en WordPress; qu\u00e9 son, c\u00f3mo crearlos y mejores pr\u00e1cticas.<\/p>\n","protected":false},"author":1,"featured_media":223984,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[924,892,892,716,716,831,1110,800,800,831,924,840,840,861,861],"tags":[1172],"class_list":["post-233315","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asignaturas","category-codigo","category-desarrollador","category-guia-para-principiantes","category-n-a","category-php-2","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233315","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=233315"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/223984"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}