多年的WordPress帖子

时间:2012-02-24 作者:Nate

正在尝试从specific category 对于specific years. 什么都不起作用,包括:

<?php $args=array(
\'cat\' => \'11\', //Category I\'m targeting
\'year\' => 2008,2009,2010 //Years I want
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
该代码将仅显示2008年的帖子。

2 个回复
SO网友:Brian Fegter

您应该通过筛选posts\\u来使用日期范围,其中:

function wpse_43397_where($where=\'\'){
    $where .= " AND post_date >= \'2008-01-01\' AND post_date < \'2010-12-31\'";
    return $where;
}

add_filter(\'posts_where\', \'wpse_43397_where\');
$my_query = new WP_Query($args);
remove_filter(\'posts_where\', \'wpse_43397_where\');

SO网友:Stephen Harris

这是不可能的WP_Query API:

注:以上查询返回历史上特定日期段的帖子,即“从X年、X月、X日发布”。他们无法从相对于当前的时间跨度中获取帖子,因此“过去30天的帖子”或“过去一年的帖子”之类的查询在基本查询中是不可能的,需要使用posts\\u来完成筛选。下面的示例使用posts\\u where过滤器,对于大多数时间相关的查询应该可以修改。

因此,您需要在查询之前添加一个自定义过滤器,执行查询,然后再次删除查询(这样不会影响其他查询)。

// Create a new filtering function that will add our where clause to the query
function my_restrict_to_years( $where = \'\' ) {
    // posts  in years 2008-2010 
    $where .= " AND post_date >= \'2008-01-01\' AND post_date <= \'2010-12-31\'";
    return $where;
}

add_filter( \'posts_where\', \'my_restrict_to_years\' );
$args=array(
 \'cat\' => \'11\', //Category I\'m targeting
 );
$my_query = new WP_Query($args);
remove_filter( \'posts_where\', \'my_restrict_to_years\' );
未测试

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post