根据月份和日期查询帖子

时间:2017-12-04 15:42:54

标签: php wordpress advanced-custom-fields

我正在WordPress上构建公司内部网。我正在尝试获得即将到来的生日列表(从当天开始的下一个30天),生日值来自具有Ymd格式的自定义字段。

此代码将返回所有生日:

$args = array(
            'post_type' => 'employees',
               'meta_key'  => 'birthday',
               'orderby'   => 'meta_value_num',
               'order'     => 'ASC',
               'compare' => '>=', 
               'type' => 'DATE',
            );

我想只获得一个月的即将到来的生日。

2 个答案:

答案 0 :(得分:0)

您需要在您需要的日期之前提供查询。所以你可以这样做:

$start_date = date('Y-m-d', strtotime('- 1 month')); // or $start_date = date('Y-m-d');
$end_date = date('Y-m-d', strtotime('+ 1 month')); // or '+ 30 days' for example

您可以使用$start_date$end_date来获取查询中的特定日期范围。

请记住,当您使用date和/或strtotime时,如果我正确的话,您只能在2038年到达某个地方。如果您想在2038年之后拥有日期,则需要使用new DateTime功能。 (http://php.net/manual/en/datetime.construct.php

答案 1 :(得分:0)

我找到了当月的解决方案。

                $current_month = date('m');
                $filter_month = $current_month; // show current month only

                $args = array (
                  'post_type'      => 'employees', // your custom post type
                  'meta_key'       => 'birthday',  // your custom date field name
                  'orderby'        => 'meta_value_num',
                  'order'          => 'ASC',
                  'meta_query' => array(
                    array(
                      'key'      => 'birthday',
                      'compare'  => 'REGEXP',
                      'value'    => '[0-9]{4}' . $filter_month . '[0-9]{2}',
                    ),    
                  )
                );

                $posts = get_posts($args);