HOW-TO: Creando plantillas de página para WordPress (Page Templates)

En el artículo anterior te conté cómo crear un sidebar adicional con el fin de poder sacarle más rendimiento a lo que muestras en cada página. Quizá en una sección de tu web prefieres mostrar los últimos artículos en la barra lateral pero en otra un formulario de suscripción al blog. Sin embargo, para llegar a conseguir esto y aprovecharlo al máximo necesitarás saber crear plantillas para las páginas de WordPress.

Justamente esto último es lo que vamos a ver en este artículo y verás que es incluso más fácil que el anterior tutorial.

El crear plantillas te permitirá crear estructuras nuevas, desde la más simple y conocida como fullwidth hasta la más compleja que puedas imaginar. ¿Qué te parece si comenzamos viendo cómo se crean y después buscamos algunas ideas?

Cómo crear una Plantilla Personalizada o Page Template

Crear una página personalizada es muy sencillo y prácticamente cualquier persona debería poder hacerlo sin problemas, así que no tengas ningún tipo de miedo! 😉

Para comenzar tienes dos opciones: crear un fichero PHP nuevo o duplicar el clásico page.php que encontrarás en la carpeta de tu theme. Te recomiendo dos cosas para hacerte la vida más fácil en un futuro:

  • Intenta que el nombre del archivo que has creado sea lo más descriptivo posible (page-fullwidth.php, no-sidebar.php, etc)
  • Utiliza child themes para estas modificaciones, si no sabes cómo echa un vistazo a este artículo

Para terminar de crearla (sí, acabamos ya) sólo tendrás que añadir algo como lo siguiente:

<?php
/*
Template Name: Mi plantilla personalizada
*/
?>

Y ya está creada. Ya te dije que era más fácil que crear un sidebar o casi igual que fabricar tus shortcodes 😉

Para probar que todo ha salido correctamente tendrás que añadir una página nueva a tu WordPress y en la parte «Atributos de página» encontrarás un desplegable con plantillas. Ahí encontrarás la que acabas de crear con el nombre que le diste. Para probarla vamos a insertar algo de HTML a ver qué tal se muestra, con un par de lineas bastará:

<?php
/*
Template Name: Mi plantilla personalizada
*/
?>
<h1>Mi página personalizada es la leche</h1>

Imprime correctamente el HTML y como podemos ver nos permite construir una página totalmente limpia, sin rastro de WP. Lo normal es que exista un loop para mostrar la información que añadimos al crear la página, el título y demás… es muy sencillo. Si has duplicado el archivo page.php sabrás a qué me refiero. En cualquier caso, dependerá de cómo queramos orientar la plantilla.

Adaptando nuestra plantilla al estilo de WordPress

Para no dejar nuestra plantilla tan sobria le daremos el mismo estilo que al resto de la web. Para ello tendremos que incorporar algunos elementos básicos de WP que se encargan de generar todo el contenido con un par de funciones. Un par de líneas más y…

<?php
/*
Template Name: Mi plantilla personalizada
*/

get_header(); ?>

<div id="contenido" class="contenido"> <!-- A partir de aquí mostramos el contenido -->
...
</div>

<?php
get_sidebar(); // Llamamos a la sidebar si queremos mostrarla
get_footer();
?>

Con esto deberíamos tener la plantilla terminada y preparada para utilizarla bajo el mismo estilo que el resto de nuestro tema. Evidentemente es una plantilla muy básica que deberemos modificar más si queremos que tenga alguna utilidad (de hecho ahora mismo ni mostrará el contenido de la página).

Si quieres mostrar el contenido de la página tendrás que crear un Loop, echa un vistazo a la documentación de WordPress

Para qué puede servir crear una plantilla

Para que tenga cierta utilidad tendrás que darle una vuelta más a lo que hemos hecho en este tutorial. Créeme, esto es sólo el principio de algo que puedes personalizar tanto como quieras, pero hay que partir desde aquí.

Ahora que conoces el sistema para crear Page Templates en WP podrás crear páginas como

  • Un listado de autores con información sobre ellos y sus publicaciones
  • Una lista de artículos de una categoría determinada ordenados como quieras
  • Una página que muestre artículos con ciertas etiquetas
  • Página de testimonios o recomendaciones
  • La página de contacto personalizada con un formulario, mapa y otra información
  • …y mucho más

También te servirá para modificar el diseño mediante CSS según la plantilla que se utilice o incluso jugar con condicionales gracias a la función is_page_template(). Todo esto lo dejo en tus manos, la mejor forma de aprender es practicando en tus propios proyectos 😉

Ya sabes, como siempre, cualquier duda o pregunta lánzala a través de los comentarios. Y si tienes alguna idea en mente me gustaría leerla también! 😉

Comentarios

  • Amelia dice:

    Gracias por el aporte.
    He creado la plantilla: contacto1
    En su interior he colocado: <?php /* Template Name: contacto1 */ ?>
    He creado la página: Contacto y he insertado: [contact-form-7 id="xxx" title="Contact form 1"]
    También he probado colocando en la página: <?php echo do_shortcode("[contact-form-7 id="xxx" title="Contact form 1"]"); ?>
    Y no funciona.
    He comprobado este código en una página de plantilla predeterminada y funciona perfectamente.
    No se qué estoy haciendo mal.
    Gracias de antemano.

    • Hola Amelia,

      ¿La plantilla que has creado te aparece en el desplegable? Si te aparece en el listado es que la plantilla está bien y quizá el contenido no lo está del todo. Intenta añadir cualquier texto plano para ver si consigues que se muestre en el navegador una vez cargues la página a la que le hayas asignado la plantilla, tal y como recoge el artículo.

      Si prefieres hacerlo fácil y mantener la estructura del resto de páginas puedes duplicar el archivo page.php, cambiarle el slug (por ejemplo: page-contacto.php) y añadirle el nombre de la plantilla como comento en el artículo. Después sólo tendrás que modificar el código a tu antojo 🙂

      Si no consigues solucionarlo no dudes en volver a comentar.

      Un saludo y gracias por pasarte!

  • Hola, yo tengo una plantilla creada ya con mi theme "Blog Left Sidebar" pero resulta que si la aplico a una página sólo me muestra lo que hay en el blog, y no lo que escribo en mi página. Hace exactamente la función que yo quiero, pero me gustaría que me mostrara el contenido de la página que estoy creando. Que es lo que tendría que cambiar?

    • Hola patricabaleiro,

      Lo más probable es que la plantilla que estás seleccionando sea exclusivamente para mostrar el contenido de tus entradas y no el de la página. Sobre esa página jamás se mostrará su contenido a menos que modifiques la plantilla.

      Para crear una página que muestre lo que escribes en el editor visual de wordpress lo más fácil es que dupliques el archivo page.php que encontrarás en la carpeta de tu tema y lo modifiques según tu necesidad. Desconozco el tema que estás usando y cómo será su estructura pero si puedo ayudarte en algo más no dudes en comentar.

      Un saludo!

  • Andrea Haro dice:

    Buenos días,

    Tengo un tema creado, lo he incluido tal y como indicas, pero no me aparece en el desplegable y no puedo seleccionarla.

    ¿Que puede estar pasando?

    He incluido el .php en el directorio /wp-content/themes/spacious/page-templates

    Un saludo,

Deja un comentario

¿Quieres recibir las últimas novedades en tu e-mail?

¡GRACIAS!