¿Quieres agregar la clase ancestor a las publicaciones individuales? Cuando abres una página de publicación individual (es decir, single.php), no obtienes ninguna clase current_page_item o current-page-ancestor en tu wp_nav_menu. Tampoco puedes indicar a tus usuarios en qué sección se encuentran actualmente.
Instrucciones:
Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a 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 en las etiquetas no coincide con el título de la página, entonces no agregará la clase.
Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo copiar / pegar fragmentos de código correctamente en WordPress, para que no rompas tu sitio accidentalmente.
Si te gustó este fragmento de código, considera revisar nuestros otros artículos en el sitio como: 7 mejores servicios de VPN para usuarios de WordPress COMPARADOS (2018) y 12 mejores plugins de podcast para WordPress.
¿Puedes poner el código en esta página? No lo veo...
¡Actualizado!