WordPress como CMS: identificar subpáginas

9 de agosto, 2011 - por

Si te has animado a utilizar WordPress como CMS, un poquito más allá de su foco original de funcionar como un blog, la gestión de las páginas pronto se va a convertir en uno de tus temas habituales de desarrollo.

Cuando empiezas a montar la estructura de información del sitio, y separas los contenidos por áreas, te encontrarás probablemente con la clásica estructura de árbol, en la que hay unas páginas principales de las que cuelgan otras secundarias. Identificar en qué pagina y subpágina se encuentra el usuario te va a venir bien para muchas cosas, empezando por un menú básico que ayude a navegar con más facilidad.

WordPress cuenta con su propia función para determinar en qué página te encuentras:


is_page($page);

pero no con una para determinar la subpágina. En nuestros proyectos solemos utilizar la siguiente:


/**
 * Returns boolean value for checking if the current page is child
 * of a parent page
 *
 * @param int
 * @return bool
 */
function is_subpage($iID = null)
{
        global $post, $wpdb;
        if ( is_page() AND isset( $post->post_parent ) != 0) {
                $aParent = $wpdb->get_row( $wpdb->prepare(
                    "SELECT ID FROM $wpdb->posts \
                    WHERE ID = %d AND post_type = 'page' LIMIT 1",
                    $post->post_parent
                ) );
                if ( is_int( $iID ) > 0 ) {
                        if ( $aParent->ID == $iID ) {
                                return true;
                        } else {
                                return false;
                        }
                } else {
                        if ( $aParent->ID ) {
                                return true;
                        } else {
                                return false;
                        }
        } else {
                return false;
        }
}

La llamamos desde el fichero:


/wp-includes/functions.php

Tema: Desarrollo

Etiquetas: , , .


Otras entradas que pueden interesarte