28Feb 2013 0 Comments */?>

Comprobar si es una página hija en wordpress

Categorías: Tips de wordpress

Hoy tuve que crear una especie de menu donde quería ver si la página actual era la correcta, o si se trataba de una página hija (children page) para así poder asignar la clase selected. En wordpress no existe una función is_parent() así que me cree una.

Mi menu es el siguiente:

<?php
global $post;
?>
<h1 class="sub-menu">
	<a href="<?php echo site_url('assess/');?>" title="Assess" <?php echo is_parent($post,'assess') ? 'class="selected"' : '';?>>Assess</a>
	<a href="<?php echo site_url('build/');?>" title="Build" <?php echo is_parent($post,'build') ? 'class="selected"' : '';?>>Build</a>
	<a href="<?php echo site_url('manage/');?>" title="Manage" <?php echo is_parent($post,'manage') ? 'class="selected"' : '';?>>Manage</a>
</h1>

Como ven lo que hago es ver si estoy en la página raiz o una hija del raiz y le aplico la clase “selected”.Por que si mi página es /build/ o /build/sub-page/ en ambos casos me va a marca como selected.

Siempre es recomendable crear un menu custom y usar las funciones de wordpress, pero si no pueden por algún motivo es bueno saber que existen soluciones.

La función is_parent():

/**
* Get page id
*/

function get_page_id($slug){
	$page = get_page_by_path($slug);
	return @$page->ID;
}
/**
* Check if we are in actual page or child page
*/
function is_parent($post,$slug) {
	  $post_id = get_page_id($slug);
	  if ($post->ID == $post_id) return true;
	  else if ($post->post_parent == 0) return false;
	  else return is_parent(get_page($post->post_parent),$slug);
}

En este caso tengo la función get_page_id() que como su nombre indica me devuelve el ID de una página pasándole el slug.
Luego utilizo una función recursiva que devuelve true si es la página actual, false si no hay página parent o se vuelve a llamar si hay una página parent.

Espero que a alguien le sirva. Saludos

Damián Logghe

Programador freelancer y emprendedor en sueños. Contento de ser mi jefe y poder hacer lo que me gusta. WordPress es mi principal fuente de ingreso y me escribo tanto para ayudar como para tener una guia de memoria. Quieres contratarme? Déjame un mensaje.

More Posts - Website

Follow Me:
TwitterFacebookLinkedInGoogle Plus