is_search no funciona en la página de resultados de búsqueda
Tengo un submenú adicional con este código en la barra lateral:
if(is_404() || is_search()) :
echo 'debería estar vacío';
else :
if($post->post_parent == '68')
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) {
?><ul><?php echo $children; ?></ul><?php
}
endif;
Tengo un problema con la primera línea. Funciona correctamente en la página 404 y en la página de búsqueda cuando buscas algo que no existe, pero cuando buscas algo que sí existe, el submenú aparece en la barra lateral. ¿Qué está mal en este código?

Si lo que deseas es que el else
aparezca en las páginas 404 y en las páginas de búsqueda pero solo cuando la búsqueda no devuelve resultados, el condicional que necesitas es ...
if(is_404() || (is_search() && 0 === $wp_query->found_posts)) {
// ...
} else {
// ...
}
La diferencia entre esto y tu código es que he añadido una verificación adicional para ver si la consulta de búsqueda tiene algún resultado. Los paréntesis alrededor de is_search() && 0 === $wp_query->found_posts)
hacen que el ||
opere contra toda la cláusula, al igual que los paréntesis en matemáticas, en realidad.
Si no deseas que el else
aparezca en ninguna página de búsqueda o 404, entonces necesitas...
if(!is_404() || !is_search()) {
// ...
} else {
// ...
}
... pero eso es lo que ya tienes, así que no estoy seguro de lo que estás intentando lograr.

Hola, lo que quiero es que el menú NO aparezca en páginas 404, búsqueda y resultados de búsqueda. Ahora funciona bien con 404 y página de búsqueda sin resultados, pero cuando obtengo resultados el menú vuelve a aparecer...

mi problema es que if(!is_404() || !is_search()) {
no funciona siempre. Funciona bien en 404 y búsqueda cuando no hay resultados, pero no funciona en la página de búsqueda si hay resultados. No lo entiendo, parece un bug.
