Je sais que je ne suis pas censé utiliser query_posts
Le truc, c'est que j'ai un programme qui le fait déjà.
query_posts("");
echo "is_search():" . is_search();
query_posts("s=kucing");
echo "is_search after():" . is_search();
Maintenant, le premier écho retourne vide.
Le second retourne 1
Je me demande s’il existe une variable globale que je peux mettre à 0, de sorte que is_search () renvoie false même si je l’ai fait.
query_posts("s=kucing");
Votre vrai gros problème ici est l’utilisation de query_posts
. Il casse l'objet de requête principal et définit l'objet de requête principal sur la requête effectuée par query_posts
. Ce que vous voyez est tout à fait normal.
Votre vraie solution ici avec l'utilisation de query_posts
serait de réinitialiser la requête principale à ce qu'elle devrait être. C'est ici que wp_reset_query()
entre en jeu. S'il s'agit d'une page normale, is_search()
renverra false
après wp_reset_query()
lorsque la requête principale sera réinitialisée à la requête principale de la page.
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 )
N'oubliez pas que l'utilisation de query_posts
est fortement déconseillée. Vous devriez utiliser WP_Query
Vous pouvez utiliser global $wp_query
et définir le is_search
sur false;
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