La mayoría de las veces que usamos WordPress para hacer webs que nada tienen que ver con un blog (o al menos es lo menos importante), WordPress nos plantea retos para poder jugar con sus reglas. Cuando hacemos un Custom Post Type nos falta esa parte en la que el menu muestra el padre o la página dónde mostramos el listado de estos CPT. Pues podemos interceptar el menu para poder añadir estas clases.

Primero deberemos cercionarnos de que usamos wp_nav_menu(), tiene que tener una pinta así:

wp_nav_menu( 
    array( 
        'menu'       => 'main-menu', /* ID de menu */
        'container'  => 'div', /* Contenedor del menú */
        'depth'      =>  2, /* Niveles de elementos */
        'menu_class' => 'menu' /* Clase del menú */
    ) 
);

Hay más opciones y éstas deberán variar en función de tus necesidades.

Después abrimos nuestro functions.php y usaremos un add_filter para interceptar el menu y añadir las clases:

function PREFIJO_add_menu_classes( $items ) {
    /* Para poder tener el $post de la página actual */
    global $post;
 
    /* Bucle que recorre los items del menú */
    foreach($items as $item){
        /* Aquí hay que hacer comprobaciones para poder añadir la clase
           (¡CUIDADO! Si lo dejáramos así, añadiría clases a todos los items la clase: current-menu-parent) */
        if (!in_array('current-menu-parent', $item->classes)) {
            $item->classes[] = 'current-menu-parent';
        }
    }
    /* Devolvemos los items del menu para que siga el proceso */
    return $items;    
}
 
add_filter( 'wp_nav_menu_objects', 'PREFIJO_add_menu_classes', 10 ,1 );

Ahora sólo tenéis que pensar en la comprobación de la identificación del item correspondiente en el menu.

Categorías: Wordpress
Si necesitas una url corta puede usar: codygo.es/1792

Deja un comentario