Texto do menu fica aparecendo na página de busca
-
Olá!
Eu criei uma estrutura de menu, com sub-menus.
O Problema:
Quando eu faço uma busca no site, os títulos destes menus estão aparecendo na página de resultados. E isso faz a pessoa clicar, achando que é uma página.
Você consegue me ajudar a resolver este problema?
-
Oi @razione,
Você usou só o esquema de menus nativos do WordPress ou usou alguma coisa diferente? Os links são para páginas/posts ou links personalizados?
Olá, @felipeelia,
Obrigado pelo seu retorno.
Eu usei o esquema de montar os menus, nativo do WordpPress.
Os links que aparecem na página de busca, são os links persnalizados, os outros, que são páginas, não aparecem.
Vale dizer que o link que é personalizado, está marcado como “Megamenu”.
Ou seja:
Menu Home (Link personalizado)
L sub menu página 1
L sub menu página 2Assim, o texto”Menu home” está aparece na pagina de resultados do search. Se eu digito “Home” nesta busca, aparece um link, relativo a esse menu.
Pode me ajudar?
Obrigado!
- Esta resposta foi modificada 6 anos, 8 meses atrás por Julinho.
Oi @razione,
Você está usando algum plugin ou é o seu tema que faz com que essa opção de megamenu apareça? Se for por plugin, pode tentar desabilitá-lo, fazer uma nova busca e ver se o resultado some, por favor?
Oi @razione,
Então, seu tema deve estar criando um tipo de conteúdo novo para gerenciar esses itens do megamenu, por isso eles aparecem na busca. Veja se o seu tema tem alguma chamada para a função
register_post_type()
. Se ele tiver, confira se essa chamada pode ter a ver com os itens do megamenu. Se achar que sim, experimente incluir'exclude_from_search' => true
no array que é passado como argumento para a função.Se você não encontrar absolutamente nada sobre isso, é possível incluir na busca somente conteúdos de tipos conhecidos. Para isso você pode usar um código como o aqui embaixo, que só exibe os posts e as páginas:
function wpbr_77689_pre_get_posts( $query ) { if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) { $query->set( 'post_type', array( 'post', 'page' ) ); } } add_action( 'pre_get_posts', 'wpbr_77689_pre_get_posts' );
(escrevi aqui sem testar, então pode ser preciso alterar alguma coisa aí).
Ah, e não esquece de voltar para dizer o resultado dos testes!
Oi @felipeelia
Vou fazer este teste, que você orientou e volto aqui para falar sobre.
Obrigado desde já!
Oi @felipeelia, tudo bom?
Eu fiz as sugestões, porém, não obtive sucesso. De alguma maneira, a página de busca, exibe o nome do Menu como se fosse um post.
Abaixo, o código da página, pode me ajudar?
- Esta resposta foi modificada 6 anos, 8 meses atrás por Felipe Elia. Razão: Colocando código no pastebin.com
Oi @razione,
Que pena… Tente alterar a linha
$query->set( 'post_type', array( 'post', 'page' ) );
por
$query->set( 'post_type', array( 'page' ) );
e veja se só páginas são retornadas na busca, por favor.O problema não é no template que exibe as buscas, mas no código que o WP usa para obter os resultados. O seu código vai ter que trabalhar antes mesmo do WP usar este arquivo. Se a troca que eu falei aí em cima não funcionar, tente colocar um
die( 'teste' );
na função e veja seteste
é exibido na tela. Se não acontecer é sinal que o WP está ignorando esta função.Ah, um detalhe: quando for postar código muito grande aqui, por favor coloque no pastebin.com, beleza? Facilita a leitura 😉
Olá, @felipeelia
Agora, o menu está sumindo, apenas na página do search.
Olhei o arquivo functions e não encontrei nada que pudesse dar conflito.
Pode me ajudar?
Código: https://pastebin.com/J1bUM1E0
Oi @razione,
Que alteração você fez que passou a acontecer isso?
Oi @felipeelia
Alterei a linha para $query->set( ‘post_type’, array( ‘page’ ) );
Experimente tirar esse trecho:
if (is_search() && !$spb && !is_admin()) { $query->set( 'post_type', array( 'page' ) ); } return $query;
e comentar a linha
$search_array[] = 'nav_menu_item';
e me conta se o menu voltou a aparecer ou não, por favor.
- O tópico ‘Texto do menu fica aparecendo na página de busca’ está fechado para novas respostas.