Saber si una página es hija de otra página a cualquier nivel en WordPress
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:
|
1 2 3 |
if ( $post->post_parent == '1' ) { //donde '1' es la ID de la página padre
// lo que deseemos
} |
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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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;
} |
Y luego para utilizarla en nuestra plantilla simplemente tendremos que usar la función:
|
1 2 3 |
if (is_tree(1)) { //donde '1' es la ID de la página padre
// lo que deseemos
} |
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.
