Wp查询日期之间的帖子,但任何年份
Posted
技术标签:
【中文标题】Wp查询日期之间的帖子,但任何年份【英文标题】:Wp query posts between dates, but any year 【发布时间】:2020-04-06 13:51:53 【问题描述】:我正在使用 ACF pro 并且需要查询具有某些特殊 ACF 字段特定值的帖子。 但我也需要获得任何年份的帖子,但日期应该在今天和从今天起 30 天之间。我不能使用静态月份编号,因为如果在第 1 天发布帖子,则无法提前找到足够的内容。 这是我的初始查询不起作用。如果只获取特定的年份和月份,它就可以工作,但只能获取该日期的帖子。
//$date_month_advance_month = ... month number of today + 30 days
//$date_month_advance_day= ... day number of today + 30 days
// args
$args = array(
'post_type' => 'my_post_type',
'posts_per_page'=> -1,
'meta_key' => 'status',
'meta_value' => 'accepted',
'date_query' => array(
'compare' => 'BETWEEN',
array(
'month' => $date_today_month,
'day' => $date_today_day,
),
array(
'month' => $date_month_advance_month,
'day' => $date_month_advance_day,
),
),
);
【问题讨论】:
【参考方案1】:您可以创建自定义query
。我很快做了一个,测试了日期,但没有测试自定义字段status
,因为我没有它。将my_post_type
替换为您的帖子类型名称。
global $wpdb;
$query = "
SELECT * FROM $wpdb->posts as p
LEFT JOIN $wpdb->postmeta as pm
ON pm.post_id = p.ID
WHERE p.post_type = 'my_post_type'
AND pm.meta_key = 'status'
AND pm.meta_value = 'accepted'
AND REPLACE(SUBSTRING(p.post_date, 6, 10), '-', '') BETWEEN %s AND %s
GROUP BY p.ID
";
// Should replace 0301 and 0331 by variables (date('mO1') and date('m31') for example), I let you handle this.
$prepared_query = $wpdb->prepare($query, array('0301', '0331'));
$result = $wpdb->get_results($prepared_query);
foreach($result as $r)
$cs_post = get_post($r->ID);
echo '<p>';
echo get_the_title($cs_post->ID) .'<br>';
echo get_the_date('Y-m-d', $cs_post->ID) .'<br>';
echo '</p>';
不确定这是否是正确的方法,但它有效。
【讨论】:
谢谢! 123456以上是关于Wp查询日期之间的帖子,但任何年份的主要内容,如果未能解决你的问题,请参考以下文章
text 查询旧帖子并更新其日期字段。需要wp-cli-restful软件包(https://wp-cli.org/restful/)。