我是wordpress和php的新手。 我需要显示从2009年6月到2010年6月的所有帖子。 如何通过创建自定义循环来实现?
答案 0 :(得分:3)
query_posts()只允许显示特定周或月的帖子。但是,您可以在两个日期之间显示帖子,添加几行代码。您需要将此代码粘贴到您想要显示的主题中的任何位置。
<?php
function filter_where($where = '') {
$where .= " AND post_date >= '2009-06-01' AND post_date <= '2010-06-30'";
return $where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
while (have_posts()) :
the_post();
the_content();
endwhile;
?>
答案 1 :(得分:1)
使用WP查询 时间参数
year(int) - 4位数年份(例如2011年)。 monthnum(int) - 月份编号(从1到12)。 w(int) - 一年中的一周(从0到53)。使用MySQL WEEK命令。该模式取决于&#34; start_of_week&#34;选项。 day(int) - 月中的某天(从1到31)。 小时(整数) - 小时(从0到23)。 minute(int) - 分钟(从0到60)。 second(int) - Second(0到60)。 m(int) - YearMonth(例如:201307)。
仅返回当前日期的帖子:
$today = getdate();
$query = new WP_Query( 'year=' . $today["year"] . '&monthnum=' . $today["mon"] . '&day=' . $today["mday"] );
仅返回当周的帖子:
$week = date('W');
$year = date('Y');
$query = new WP_Query( 'year=' . $year . '&w=' . $week );
返回2010年3月1日至3月15日的帖子:
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
// posts for March 1 to March 15, 2010
$where .= " AND post_date >= '2010-03-01' AND post_date < '2010-03-16'";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );
退回30至60天的帖子
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
// posts 30 to 60 days old
$where .= " AND post_date >= '" . date('Y-m-d', strtotime('-60 days')) . "'" . " AND post_date <= '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );
如需更多参考,请点击此处http://codex.wordpress.org/Class_Reference/WP_Query