WordPress自定义文章类型ACF日期字段按当日日月筛选实现问题
实现方案
ACF日期字段默认存储格式为Ymd(8位数字,例如19900520代表1990年5月20日),我们只需匹配存储值的后四位(对应月份+日期)与当前日期的月日一致即可,修改后的查询代码如下:
// 获取当前日期的月份+日期,格式为两位月+两位日,如0520代表5月20日 $hoy_md = date('md'); $args = array( 'post_type' => 'celebridades', // 自定义文章类型名称 'nopaging' => true, 'orderby' => 'meta_value_num', 'meta_key' => 'nacimiento_', // ACF日期字段名 'meta_query' => array( 'relation' => 'AND', // 可选:排除未填写出生日期的条目 array( 'key' => 'nacimiento_', 'compare' => 'EXISTS' ), // 匹配出生日期的月日与当前月日一致 array( 'key' => 'nacimiento_', 'value' => '^[0-9]{4}' . $hoy_md . '$', 'compare' => 'REGEXP', 'type' => 'CHAR' ) ) );
如果你的ACF日期字段修改过存储格式,调整对应匹配规则即可:例如存储格式为Y-m-d时,将正则规则改为^[0-9]{4}-' . date('m-d') . '$即可。
如果数据量较小,也可以用更简单的LIKE写法替换上面的正则匹配规则,性能差异可以忽略:
array( 'key' => 'nacimiento_', 'value' => '%' . $hoy_md, 'compare' => 'LIKE' )
内容的提问来源于stack exchange,提问作者user117732
相关产品推荐
相关产品推荐

