我只想列出两个特定日期之间发布的帖子
我在http://www.wprecipes.com/wordpress-loop-get-posts-published-between-two-particular-dates
找到了解决方案我的代码就在这里,遗憾的是这不行!
<?php
function filter_where($where = '') {
$where .= " AND post_date >= '2012-05-09' AND post_date <= '2012-05-11'";
//$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>
<?php while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php endwhile; ?>
答案 0 :(得分:4)
query_posts()
,因为它会破坏全局变量并搞乱条件等...... 您没有提到此代码的运行位置。例如,如果它位于页面模板上,则不会收到任何帖子,因为在将$ query_string传递给查询时,您使用的是全局$ wp_query对象,它只会查询页面post_types。
我使用新的WP_Query而不是query_posts测试了你的代码,它运行正常。
function filter_where( $where = '' ) {
$where .= " AND post_date >= '2012-05-01' AND post_date < '2012-05-14'";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( array( 'post_type' => 'post' ) );
echo '<div id="content" style="color: white!important;">';
echo '<h1>And here are the posts……</h1>';
while( $query->have_posts() ) : $query->the_post();
echo '<h2>'. get_the_title() .'</h2>';
endwhile;
echo '</div>';
remove_filter( 'posts_where', 'filter_where' );