Wordpress - 按日期范围获取帖子 [英] Wordpress - get posts by date range

查看:27
本文介绍了Wordpress - 按日期范围获取帖子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从 WordPress 获取过去 7,30 和 365 天的帖子列表.

Im trying to get a list of posts from WordPress for the last 7,30 and 365 days.

这是我使用的代码:

$args = array(
        'posts_per_page'=>10,
        'post_status'=>'publish',
        'post_type'=>'post'
    );
    if(isset($_GET['group'])){
        switch($_GET['group']){
            case 'week':
                $time = date('Y-m-d h:i:s',strtotime('-1 week'));
                break;
            case 'month':
                $time = date('Y-m-d h:i:s',strtotime('-1 month'));
                break;
            case 'year':
                $time = date('Y-m-d h:i:s', strtotime('-1 year'));
                break;
            default:
                $time = '';
                break;
        }
        if($time!=''){
            $args['pub_date'] = '>= "'.$time.'"';
        }
    }

    $query = new WP_Query( $args );

如果我 error_log args 数组,我可以看到正在设置的时间戳.但是当我 error_log WP_Query 对象时,我可以看到 SQL 查询:

If I error_log the args array I can see the timestamp being set. But when I error_log the WP_Query object I can see the SQL query:

SQL_CALC_FOUND_ROWS  wp_posts.* FROM wp_posts  INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1  AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value desc LIMIT 0, 10

此查询不包含我设置的 pub_date 日期范围.我怎样才能做到这一点?

This query does not hold the pub_date date range I have set. How can I achieve this?

推荐答案

感谢 MichaelH 在 此主题 在 wp.org 论坛上.您可以修改它,以满足您的要求.

Credit goes to MichaelH in this Thread on wp.org forums. You could modify it, to fit your requirements.

<?php
  function filter_where($where = '') {
    //posts in the last 30 days
    //$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
    //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')) . "'";
    //posts for March 1 to March 15, 2009
    $where .= " AND post_date >= '2009-03-01' AND post_date <= '2009-03-15'";
    return $where;
  }
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>

这篇关于Wordpress - 按日期范围获取帖子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆