如果在同一页上(在同一请求期间)调用该函数,则不必将其存储在COOKIE或会话中。
您只需创建全局变量并将查询存储在该变量中。这样,您就不必将它们发送给用户,也不必将它们存储在访问者浏览器中。
所以你可以这样写:
// first call
global $my_special_query;
$my_special_query = new WP_Query(...);
...
// second call
// global $my_special_query; // if the second call is in another file, there is a chance you\'ll have to uncomment this line
if ( $my_special_query->have_posts() ) { ... }
但有几件事你必须记住:
查询将记住其状态。所以如果你打电话the_post
在第一次调用中,查询将在第二次调用中已经位于该位置。您可以使用rewind_posts
方法进行更改如果第二个调用在另一个PHP文件中,那么您可能需要告诉PHP$my_special_query
变量是全局变量另一方面如果两个调用都是在不同的请求中进行的,那么就不能再使用变量了。因此,您必须将这些帖子存储在访问者浏览器中。
请记住,在某些国家使用会话/cookie会导致一些法律问题,您必须解决这些问题。您可以使用cookie或会话来执行此操作。