我正在WordPress上构建公司内部网。我正在尝试获得即将到来的生日列表(从当天开始的下一个30天),生日值来自具有Ymd格式的自定义字段。
此代码将返回所有生日:
$args = array(
'post_type' => 'employees',
'meta_key' => 'birthday',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'compare' => '>=',
'type' => 'DATE',
);
我想只获得一个月的即将到来的生日。
答案 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);