Saber si una página es hija de otra página a cualquier nivel en WordPress


4 noviembre, 2011
Sin comentarios
por Héctor Garrofé

En algunos proyectos, y en más de una ocasión, he necesitado saber si una página es hija de otra página para mostrar algo específico en ellas.

Para esto hay una muy fácil solución, simplemente nos bastará con utilizar el siguiente código para saber si una página es hija de otra página:

[crayon lang=”php”]
if ( $post->post_parent == ‘1’ ) { //donde ‘1’ es la ID de la página padre
// lo que deseemos
}
[/crayon]

Este sencillo código peca de ser demasiado básico ya que solo nos sirve para comprobar las páginas hijas de primer nivel. En mis proyectos de poco me sirve porque las páginas hijas suelen tener a su vez hijos. Para ello necesitaremos algo un poco más complicado.

Agregaremos esta función en el archivo functions.php de nuestro tema:

[crayon lang=”php”]
function is_tree( $pid ) {
// $pid = La ID de la página sobre la que queremos comprobar si tiene hijos
global $post;
if ( is_page($pid) )
return true;
$anc = get_post_ancestors( $post->ID );
foreach ( $anc as $ancestor ) {
if( is_page() && $ancestor == $pid ) {
return true;
}
}

return false;
}
[/crayon]

Y luego para utilizarla en nuestra plantilla simplemente tendremos que usar la función:

[crayon lang=”php”]
if (is_tree(1)) { //donde ‘1’ es la ID de la página padre
// lo que deseemos
}
[/crayon]

He encontrado más de un código por la red que promete hacer esto mismo… pero a mi sólo me funciona este.

Espero que le sirva a alguien de ayuda.

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *