X

Añadir Clase Ancestro a Mensajes Individuales

Snippets by IsItWP

¿Quieres añadir la clase ancestor a las entradas individuales? Cuando abres una página de entrada única (es decir, single.php), no obtienes ninguna clase current_page_item o current-page-ancestor en tu wp_nav_menu. Tampoco puede indicar a sus usuarios en qué sección se encuentran actualmente.

Instrucciones:

Todo lo que tienes que hacer es añadir este código al archivo functions.php de tu tema o en un plugin específico del sitio:

<?php
function add_single_post_ancestor_nav_class($classes, $item){
    global $post;
    $is_ancestor = false;
    if ( is_single() ) {
        if ( $post->post_type != 'post' ) {
        	// Checks if the custom-post-type label name matches the title of the nav-page-item
        	$post_type_obj = get_post_type_object($post->post_type);
        	$post_type_labels = $post_type_obj->labels;
        	$post_type_name = $post_type_labels->name;
        	if( $item->title == $post_type_name ) { $is_ancestor = true; }
        }
        else {
        	// Checks if one of the single-post categories matches the title of the nav-page-item
        	$categories = get_categories();
        	foreach ( $categories as $category ) {
        		if ( in_category($category->name) && $item->title == $category->name ) { $is_ancestor = true; }
        	}
        }
        if( $is_ancestor ){ $classes[] = 'current-page-ancestor'; }
    }
    return $classes;
}
add_filter('nav_menu_css_class' , 'add_single_post_ancestor_nav_class' , 10 , 2);
?>

Si el nombre genérico de las etiquetas no coincide con el título de la página, no se añadirá la clase.

Nota: Si es la primera vez que añade fragmentos de código en WordPress, consulte nuestra guía sobre cómo copiar / pegar correctamente fragmentos de código en WordPress, para no romper accidentalmente su sitio.

Si te ha gustado este fragmento de código, por favor considere revisar nuestros otros artículos en el sitio como: 7 mejores servicios VPN para usuarios de WordPress y 12 mejores plugins de podcast para WordPress.

[code]post_type != 'post' ) { // Checks if the custom-post-type label name matches the title of the nav-page-item $post_type_obj = get_post_type_object($post->post_type); $post_type_labels = $post_type_obj->labels; $post_type_name = $post_type_labels->name; if( $item->title == $post_type_name ) { $is_ancestor = true; } } else { // Checks if one of the single-post categories matches the title of the nav-page-item $categories = get_categories(); foreach ( $categories as $category ) { if ( in_category($category->name) && $item->title == $category->name ) { $is_ancestor = true; } } } if( $is_ancestor ){ $classes[] = 'current-page-ancestor'; } } return $classes; } add_filter('nav_menu_css_class' , 'add_single_post_ancestor_nav_class' , 10 , 2); ?>[/code]

Comentarios   Deja una respuesta

  1. Can you put the code on this page? I can’t see it…

    1. Updated!

Añadir un comentario

Nos alegra que haya decidido dejar un comentario. Tenga en cuenta que todos los comentarios se moderan de acuerdo con nuestra política de privacidad , y que todos los enlaces son nofollow. NO utilice palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.

WordPress Launch Checklist

La lista definitiva para lanzar WordPress

Hemos recopilado todos los elementos esenciales de la lista de comprobación para el lanzamiento de su próximo sitio web de WordPress en un práctico ebook.
Sí, envíeme el ¡gratuito!