Suporte » Temas » CSS current-page não funciona em um menu

  • Resolvido Pedro Dias

    (@pedrodias-1)


    Pessoal, boa noite!

    Estou com um problema que já me tirou do sério: criei um css “bunitu” para estilizar um menu, mas acontece que uma página não fica com o efeito “highlight” (current-page) e todas as demais ficam! Já verifiquei pelo Firebug e esta página não está “pegando” a classe necessária, mas as demais sim. Help-me please!!!

    Vejam: http://www.mundodoprazer.com.br/avanti

    PS 1: podem acessar pois o conteúdo do site não é pornográfico.
    PS 2: Para montar o menu utilizei a função register_nav_menu…

    Obrigado!

Visualizando 8 respostas - 1 até 8 (de um total de 8)
  • Criador do tópico Pedro Dias

    (@pedrodias-1)

    Pessoal,

    OBS: é o MENU INFERIOR a opção BLOG não fica com o estado CURRENT – mas a opção BLOG do MENU SUPERIOR fica!

    Obrigado!

    Vc tem alguma função manipulando os menus personalizados?

    Tentei reproduzir o erro aqui, mas não consegui.

    Como está o código de criação dos menus?

    Criador do tópico Pedro Dias

    (@pedrodias-1)

    Este é todo o código no arquivo Functions.php

    <?php
    	if(function_exists('register_nav_menu')){
    		register_nav_menu('menu','menu');
    	}
    
    	// Add support for Featured Images
    	if (function_exists('add_theme_support')) {
    			add_theme_support('post-thumbnails');
    			add_image_size('index-categories', 80, 80, true);
    			add_image_size('page-single', 80, 80, true);
    	}
    
    	function InsertFeaturedImage($content) {
    
    	global $post;
    
    	$original_content = $content;
    
    			if ( current_theme_supports( 'post-thumbnails' ) ) {
    
    					if ((is_page()) || (is_single())) {
    							$content = the_post_thumbnail('page-single');
    							$content .= $original_content;
    							} else {
    							$content = the_post_thumbnail('index-categories');
    							$content .= $original_content;
    					}
    
    			}
    			return $content;
    	}
    
    	add_filter( 'the_content', 'InsertFeaturedImage' );
    
    ?>

    E chamo o menu no HEADER e no FOOTER dessa maneira:

    <ul>
       <li><?php wp_nav_menu('menu'); ?></li>
    </ul>

    Clique na opção BLOG no menu SUPERIOR (HEADER) e veja que o menu INFERIOR (footer) não fica com o BLOG no estado CURRENT. Só esta opção (BLOG no menu INFERIOR) está assim; os outros funcionam perfeitamente e em ambos os menus (superior e inferior).

    Obrigado, pessoal.

    Criador do tópico Pedro Dias

    (@pedrodias-1)

    Pessoal,

    Descobri o que vem causando este “bug” mas continuo sem solução. A página BLOG é um template (template name: blog), e utilizo a linha abaixo para criar uma página de blog com paginação:

    <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts("cat=-1,-4,-5,-6,-9&paged=$paged"); ?>

    A linha cima é que está causando este bug sinistro no css do menu inferior.

    Alguém pode ajudar a resolver isso? Preciso criar paginação para listar os posts do blog…

    Obrigado!

    Não sabia que o loop poderia influenciar nisso, mas se for mesmo tente isso no final do loop

    wp_reset_query();

    Criador do tópico Pedro Dias

    (@pedrodias-1)

    Myst1010
    Muito obrigado, era isso mesmo!

    Cara, também nunca pensei que não fechar uma query poderia influenciar.

    Abraços!

    Bom saber disso, nem desconfiava que funcionava assim.
    Eu que agradeço pelo conhecimento, vivendo e aprendendo.

    gente, estou com o mesmo problema, mas é mais grave:

    query_posts(array('post_type' => 'post')); // por exemplo
    get_template_part( 'loop', 'index' );

    O item no menu dessa página fica apagado, e já sei porque: porque para adicionar a classe CSS de página atual, uma função verifica uma variavel que tem o id da página com uma outra variável.

    A primeira já identifiquei que é $wp_query->queried_object_id
    pois por exemplo, se estou na página com querystring page_id=10, e coloco o $wp_query->queried_object_id = ‘8’ (antes do código do nav-menu, e SEM o query_posts), o item no menu que acende é o da página 8, mesmo eu estando vendo a 10.

    $wp_query->queried_object_id = '8';
    get_template_part( 'loop', 'index' );

    Achei qque seria simple resolver colocando o $wp_query->queried_object_id com o id real da página assim:

    query_posts(array('post_type' => 'post'));
    $wp_query->queried_object_id = '10'; //page_id real
    get_template_part( 'loop', 'index' );

    Mas não resolveu! =(

    Alguém consegue desvendar esse mistéeeeerio??

Visualizando 8 respostas - 1 até 8 (de um total de 8)
  • O tópico ‘CSS current-page não funciona em um menu’ está fechado para novas respostas.