web-dev-qa-db-fra.com

Comment s'assurer que is_search () renvoie false après query_posts

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");
2
Sharen Eayrs

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

7
Pieter Goosen

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
3
sakibmoon