X

Adicionar Classe Ancestral a Posts Individuais

Snippets por IsItWP

Deseja adicionar a classe ancestral a posts individuais? Ao abrir uma página de post individual (ou seja, single.php), você não obtém nenhuma classe current_page_item ou current-page-ancestor no seu wp_nav_menu. Você também não pode informar aos seus usuários em qual seção eles estão atualmente.

Instruções:

Tudo o que você precisa fazer é adicionar este código ao arquivo functions.php do seu tema ou a um plugin específico do site:

<?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);
?>

Se o nome genérico nos rótulos não corresponder ao título da página, a classe não será adicionada.

Observação: Se esta é a primeira vez que você adiciona snippets de código no WordPress, consulte nosso guia sobre como copiar / colar snippets de código corretamente no WordPress, para não quebrar acidentalmente seu site.

Se você gostou deste trecho de código, considere conferir nossos outros artigos no site, como: 7 melhores serviços de VPN para usuários de WordPress e 12 melhores 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]

Comentários   Deixe uma Resposta

  1. Você pode colocar o código nesta página? Eu não consigo ver...

    1. Atualizado!

Adicionar um comentário

Ficamos felizes que você escolheu deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de privacidade, e todos os links são nofollow. NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.

Checklist de Lançamento WordPress

O Checklist Definitivo para Lançamento de WordPress

Compilamos todos os itens essenciais da lista de verificação para o lançamento do seu próximo site WordPress em um e-book prático.
Sim, envie-me o eBook Gratuito!