Remove a classe de nav current_page_parent do índice do blog quando em CPT

3

Estou tentando remover a classe current_page_parent do item de menu do índice do blog (recebi uma página personalizada para exibir todas as postagens do blog e está no menu) ao navegar por uma página de arquivo de tipo de postagem personalizada e postagens personalizadas.

Eu encontrei perguntas semelhantes, mas não consigo descobrir como resolvê-lo. Além disso, não tenho o current_page_parent quando navego o custom_post_type (acho que está relacionado).

    
por Kevin Mamaqi 25.10.2015 / 16:04

1 resposta

8

Você pode usar o filtro nav_menu_css_class para adicionar ou remover classes dos itens de menu. Cada item de menu individual terá esse filtro aplicado. Uma matriz de classes e o objeto de item de menu serão passados para a função e você irá return uma matriz das classes que você deseja que o item de menu tenha.

O array_diff do PHP pode ser usado para remover classes, e a adição de itens pode ser realizada anexando nomes de classes ao array via $classes[] = 'some-class-name' . Você pode usar o Conditional Tags para verificar que tipo de página está sendo visualizada para determinar o que você precisa adicionar ou remover. / p>

Veja um exemplo rápido que verifica se a página que está sendo visualizada atualmente é um arquivo ou postagem única do tipo your-post-type , e o nome do item de menu é Blog . Se essas condições forem atendidas, a classe current_page_parent será removida da matriz de classes para esse item de menu. Você pode adicionar ou ajustar isso para suas necessidades.

function wpdev_nav_classes( $classes, $item ) {
    if( ( is_post_type_archive( 'your-post-type' ) || is_singular( 'your-post-type' ) )
        && $item->title == 'Blog' ){
        $classes = array_diff( $classes, array( 'current_page_parent' ) );
    }
    return $classes;
}
add_filter( 'nav_menu_css_class', 'wpdev_nav_classes', 10, 2 );
    
por Milo 25.10.2015 / 20:34