基本上我正在使用一个插件,允许在存档页面上使用日期过时的帖子。我的问题比这个特定功能更广泛,但每个人都喜欢某些背景。
我对许多插件开发概念有所了解,但必须遗漏一些非常基本的东西。
我可以成功地重写一个查询,它给出了我想要的结果:
function modify_where( $where ) {
global $wp_query;
// define $year, $cat, etc
if( is_archive() ) {
$where = " AND YEAR(wp_posts.post_date)='".$year."' AND wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.term_id IN ('".$cat."') AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future')";
}
return $where;
}
add_filter('posts_where', 'catCal_where' );
但是,如果我尝试在主循环之后创建新的WP _ Query('different_query_stuff
'),则新查询将使用上面概述的相同WHERE语句。
问题是:我错过了什么?
感谢。
答案 0 :(得分:0)
只是一个猜测,因为我不是WP专家,但也许rewind_posts
来自Function Reference WP_Query
rewind_posts()
Resets $current_post and $post.
答案 1 :(得分:0)
您可能想要做的是在wp操作中删除该过滤器。在wp,add_action('wp','my_remove_filter_action',999)中添加一个操作,并让'my_remove_filter_action'删除您在查询中放置的过滤器,以便它影响页面查询,然后对页面的其余部分呈现惰性负荷。
您可能能够找到一些早于WP的其他过滤器来删除过滤器。您基本上只想尝试将该查询限制为主页查询。