如何确保IS_Search()在QUERY_POST后返回FALSE

时间:2015-05-31 作者:user4234

我知道我不应该使用query\\u帖子

问题是我有一个程序已经做到了这一点。

query_posts("");
echo "is_search():" . is_search();
query_posts("s=kucing");
echo "is_search after():" . is_search();
现在,第一个回声返回为空。

第二个返回1

我想知道是否有一些全局变量可以设置为0,这样即使我设置了,也会返回false

query_posts("s=kucing");

2 个回复
SO网友:Pieter Goosen

你真正的大问题is 使用query_posts. 它打断主查询对象,并将主查询对象设置为query_posts. 你所看到的很正常。

您真正的解决方案是使用query_posts 将是将主查询重置回应该的状态。这就是wp_reset_query() 进来了。如果这是普通页面,is_search() 将返回false 之后wp_reset_query() 因为主查询被重置为页面的主查询。

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 )
记住,使用query_posts 非常沮丧。您应该使用WP_Query

SO网友:sakibmoon

您可以使用global $wp_query 并设置is_search 为假;

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

结束

相关推荐