Cómo asegurarse de que is_search () devuelva false después de query_posts

2

Sé que no debo usar query_posts

La cosa es que tengo un programa que ya lo hace.

query_posts("");
echo "is_search():" . is_search();
query_posts("s=kucing");
echo "is_search after():" . is_search();

Ahora el primer eco vuelve vacío.

El segundo devuelve 1

Me pregunto si hay alguna variable global que pueda establecer en 0, por lo que is_search () devolverá false aunque lo haya hecho

query_posts("s=kucing");
    
pregunta Sharen Eayrs 31.05.2015 - 14:07

2 respuestas

7

Tu gran problema aquí es el uso de query_posts . Rompe el objeto de consulta principal y establece el objeto de consulta principal en la consulta realizada por query_posts . Lo que estás viendo es bastante normal.

Su solución real aquí con el uso de query_posts sería restablecer la consulta principal a lo que debería ser. Aquí es donde entra wp_reset_query() . Si esta es una página normal, is_search() devolverá false después de wp_reset_query() ya que la consulta principal se restablece a la consulta principal de la página.

query_posts( '&s=crap' );
// Do your loop as normal
wp_reset_query(); // Add this after your loop
var_dump( is_search() ); // Will return bool ( false )

Recuerde, el uso de query_posts está altamente desaconsejado. Deberías estar usando WP_Query

    
respondido por el Pieter Goosen 31.05.2015 - 15:18
3

Puedes usar global $wp_query y configurar is_search en falso;

global $wp_query;
query_posts(""); //is_search is false now
query_posts("s=kucing"); //is_search is set to true
$wp_query->is_search = false; //is_search is set to false
    
respondido por el sakibmoon 31.05.2015 - 14:22

Lea otras preguntas en las etiquetas