Hola, somos Arume

Desarrollamos páginas web, aplicaciones para móviles, capas de realidad aumentada y aplicaciones para Facebook. Nos apasiona la informática y somos unos perfeccionistas incurables; por eso en nuestros proyectos utilizamos estándares.

tel. 625 519 694

Mendaña de Neyra, 34, 3º B, 15008, A Coruña

Autenticarse

Registrarse. ¿Has olvidado tu contraseña?

Etiquetas

Saltar las etiquetas

Suscríbete a las RSS

Estás en:

  • Inicio >
  • Blog >
  • Estructura web en Wordpress: cargar el contenido del primer hijo

Estructura web en Wordpress: cargar el contenido del primer hijo

15 May 2013 por Cruz

Comentarios: 0

Wordpress

La mayor parte de las páginas web tienen una estructura organizada en varios niveles. Cuando el cliente entrega los contenidos vemos que muchas veces no hay nada en las secciones padre. Al preguntar qué contenidos irán ahí, la respuesta más habitual es que no quieren nada, que cuando pinchen en esa sección se redirija a la primera sección hija, es decir, que sólo se utiliza la sección padre como contenedor, para organizar los contenidos.

En este artículo explicaremos una solución a este problema cuando estamos desarrollando la página web con el open source Wordpress.

Se trata de crear una plantilla de página en la que añadiremos el código para hacer la redirección al primer hijo.

Para hacer un plantilla de página debemos crear un fichero nuevo. Las primeras líneas del fichero deberán ser las palabras "Template Name" dentro de comentarios PHP. Un ejemplo:

<?php
/*
Template Name: Cargar primer hijo
*/

A continuación pondremos el código:

$pagekids = get_pages("child_of=".$post->ID."&sort_column=menu_order");
$firstchild = $pagekids[0];
wp_redirect(get_permalink($firstchild->ID));

La primera línea llama a get_pages que es una función del núcleo del Wordpress para obtener las secciones de tipo Page. En este caso la llamamos con los siguientes parámetros:

  • child_of = $post->ID: child_of es para recuperar sólo las secciones que son hijas del id indicado. $post->ID es el id de la página en la que estamos, por lo tanto recuperamos los hijos de la página actual.
  • sort_column = menu_order: sort_column indica el tipo de ordenación. Con el valor menu_order hacemos que los recupere según el campo Page Order.

El resultado final es que recuperamos en un array todas las páginas hijas de la actual ordenadas por el campo Page Order.

En la segunda línea metemos en una variable el primer elemento del array anterior, es decir el primer hijo y en la tercera línea hacemos una redirección al primer hijo.

Para acabar sólo nos queda añadir este fichero en el directorio de nuestro tema (/wp-content/themes/mi-tema/) y la próxima vez que entremos a editar o crear una página, en la sección de "Atributos de página" veremos una nueva plantilla en el desplegable con el nombre que hayamos puesto después de "Template Name", en este ejemplo "Cargar primer hijo". Para hacer que cualquier página vaya al primer hijo sólo tendremos que tener seleccionada esta opción.

Consejos

  • No poner un nombre excesivamente largo en "Template Name", ya que el desplegable en el que se muestra tiene un máximo de 250px. Los nombres muy largos quedan cortados.
  • Poner un nombre al fichero que nos recuerde que es una plantilla para páginas y la plantilla que es. Para este ejemplo un buen nombre sería "redirect-first-child-page-template.php"

Mejora:

Una posible mejora a este código es comprobar antes si nuestra página tiene contenido. En caso de tenerlo mostramos el contenido y, si no, redireccionamos al primer hijo.

El código completo sería:

<?php
/*
Template Name: Cargar primer hijo
*/
if (have_posts()) {
  while (have_posts()) {
    the_post();
    $pagekids = get_pages("child_of=".$post->ID."&sort_column=menu_order");
    $firstchild = $pagekids[0];
    wp_redirect(get_permalink($firstchild->ID));
  }
}
?>

Más información

Comentarios

0 comentarios. Comentar.

Comentar

Comentar de forma anónima

Puedes comentar poniendo cualquier nombre o apodo, exceptuando los nombres de usuarios registrados. Máximo de 50 caracteres.

Comentar como usuario registrado

Registrarse. ¿Has olvidado tu contraseña?