Вы находитесь на странице: 1из 5

Crear y gestionar plantillas de pginas en WordPress

Publicado el 15/02/2014. Guardado en la seccin: Blog. Etiquetas: Desarrollo web, WordPress


14 comentarios (aade uno nuevo)

Atributos de pgina

A diferencia de las entradas (posts),WordPress permite asignar fcilmente plantillas


diferentes a las pginas, para poder aplicar una estructura o un diseo nico.
Por ejemplo, si la plantilla predeterminada de una web utiliza dos columnas (una principal y un
lateral), podemos crear un diseo diferente asignndole otra plantilla que no
incluya get_sidebar(), para tener la posibilidad de cambiar entre pginas con o sin columna
lateral.
Estas plantillas son archivos alternativos que podemos aadir a nuestro tema, y que
podemos personalizar a nuestro gusto, tanto a nivel de estructura (HTML) como de diseo
(CSS). Esto es especialmente til si creamos nuestros propios temas de WordPress con
diseos a medida.
Algo muy til al utilizar estas plantillas es que aaden automticamente una clase a la
etiqueta body (siempre y cuando el tema utilice la funcin body_class), para poder aplicar
estilos concretos con CSS o para realizar alguna accin especfica con Javascript.
Despus, con reglas como esta, podemos cambiar el diseo a nuestro gusto:
body.no-sidebar-page-php { Estilos CSS }

Al hablar de plantillas, en este caso se hace referencia a los documentos PHP que forman parte del tema
(por ejemplo: single.php, page.php, header.php), no a los diseos (themes, temas) que podemos descargar
y activar en WordPress.

Cmo aadir una plantilla de pgina nueva a nuestro tema


1. El primer paso es duplicar la plantilla page.php y renombrar el nuevo archivo,
procurando darle un nombre descriptivo (por ejemplo: no-sidebar-page.php)
2. Editar este nuevo documento (eliminando o aadiendo el cdigo necesario) y aadir
arriba del todo este fragmento, con el nombre que queremos darle a la plantilla. Este ser el
nombre que veremos despus en los selectores del area de administracin:

1
2
3
4
5

<?php
/*
Template Name: Pgina sin lateral
*/
?>

3. Subir el nuevo archivo al servidor (dentro del tema activo, al mismo nivel que page.php)
4. Despus, ya desde el area de administracin de WordPress, pulsamos sobre Edicin
rpida y en el desplegable Plantilla seleccionamos la que acabamos de crear (este mismo
desplegable se puede encontrar dentro del editor de pginas, en la caja Atributos de pgina).

Edicin rpida de pginas en WordPress

Esta lista slo aparecer si existe al menos una dentro de la carpeta del tema activo. Si
cambiamos el diseo de nuestra web con un tema nuevo, estas plantillas no estarn
disponibles.

Adems, conviene recordar que se trata de plantillas de pginas, por tanto no se pueden
utilizar para entradas (posts) u otros tipos personalizados de entrada (custom post types) que
hayamos creado.
Aqu encontrars la documentacin oficial (en ingls): http://codex.wordpress.org/Page_Templates

Cmo mostrar todas las pginas que utilizan una plantilla determinada
Estas pginas se pueden agrupar y listar haciendo una consulta a la base de datos a travs
deget_pages.
Esto quiere decir que si necesitamos reunir determinadas pginas (por diseo, por tipo
o simplemente por tema), una de las maneras ms sencillas es asignarles una plantilla
especfica.
Despus, para recuperar todas las pginas guardadas que utilizan una plantilla determinada,
podemos pasar una serie de argumentos a get_pages que ayuden a precisar la consulta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

<?php

// Recuperamos todas las pginas que utilizan la plantilla "no-sidebar-page.php".


$args = array(
'post_type' => 'page',
'post_status' => 'publish',
'meta_key' => '_wp_page_template',
'meta_value' => 'no-sidebar-page.php'
);
$pages = get_pages( $args );
echo '<ul>';
foreach ( $pages as $page ) {
$page_title = $page->post_title;
$li = '<li><a href="'. get_page_link($page->ID) .'">' . $page_title . '</a></li>'
echo $li;
}
echo '</ul>';
?>

En este ejemplo estamos pidiendo a WordPress que nos muestre todas las pginas
publicadas cuya plantilla sea page-no-sidebar.php.
Si, por ejemplo, necesitamos recuperar subpginas (hijas de otra pgina determinada),
podemos aadir child_of a los argumentos de la consulta, seguido del nmero de pgina
padre o superior:
1
2
3
4
5
6
7
8

<?php
// Recuperamos subpginas que utilizan una plantilla determinada
// aadiendo "child_of" seguido del nmero de identificador de la pgina superior.
$args = array(
'post_type' => 'page',
'post_status' => 'publish',
'child_of' => 3,

9
10
11
12
13
14
15
16
17
18
19
20
21

'meta_key' => '_wp_page_template',


'meta_value' => 'no-sidebar-page.php'

);
$pages = get_pages( $args );
echo '<ul>';
foreach ( $pages as $page ) {
$page_title = $page->post_title;
$li = '<li><a href="'. get_page_link($page->ID) .'">' . $page_title . '</a></li>'
echo $li;
}
echo '</ul>';
?>

En este caso el resultado ser una lista de todas las subpginas de una superior, en este caso
la correspondiente al nmero identificador 3.

Condicionales: si la pgina utiliza cierta plantilla


Gracias a la etiqueta is_page_template podemos confirmar como verdadero o falso si una
pgina utiliza alguna plantilla en particular:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

<?php
if ( is_page_template('no-sidebar-page.php') ) {
/*
Cdigo para aplicar a todas las pginas
que utilicen la plantilla no-sidebar-page.php.
*/
} else {
/*
Este cdigo slo se activar en el resto de pginas
que no cumplan la condicin anterior.
*/
}
?>

Cmo imprimir el nombre de la plantilla seleccionada


Sea para corregir errores o verificar si una pgina est realmente utilizando la plantilla que
hemos seleccionado, la funcin get_page_template imprime su nombre y la ruta asignada:

1
2
3
4

<?php
echo 'Esta pgina utiliza la plantilla: ' . basename( get_page_template() );
?>

Вам также может понравиться