0

基本上我正在玩一个插件,它允许在存档页面上发布未来日期的帖子。我的问题比这个特定的功能更广泛,但每个人都喜欢一些上下文。

我对许多插件开发概念都有所了解,但肯定缺少一些非常基本的东西。

我可以成功地重写一个查询,给我我想要的结果,如下所示:

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' );

但是,如果我尝试Query('different_query_stuff在主循环之后创建一个新的 WP_ '),则新查询将使用上述相同的 WHERE 语句。

问题是:我错过了什么?

谢谢。

4

2 回答 2

0

您可能想要做的是在 wp 操作中删除该过滤器。在 wp 添加一个操作,add_action('wp','my_remove_filter_action',999) 并让 'my_remove_filter_action' 删除您放在查询上的过滤器,以便它影响页面查询,然后在页面的其余部分呈现惰性加载。

您也许可以找到其他一些比 WP 更早触发的过滤器来移除过滤器。您基本上想尝试将该查询限制为仅主页查询。

于 2009-08-24T14:25:50.257 回答
0

只是猜测,因为我不是 WP 专家,但可能rewind_posts来自Function Reference WP_Query

rewind_posts()
Resets $current_post and $post.
于 2009-08-23T14:01:54.047 回答