WordPress获取今日之前最后发布的文章ID,常用于精准获取今天数据并处理的情况下。
为什么要获取今日之前最后发布的文章ID?
在使用数据库获取+ID游标的情况下,精准获取起始ID,可减少对无效文章ID的获取,从而提升程序性能,让操作目标更加精确。
实现代码
WordPress获取今日之前最后发布的文章ID的封装函数:
(已通过测试)
function zzw_set_today_start_post_id() {
global $wpdb;
// 获取站点时区的今天00:00:00时间
$today_start = current_time('Y-m-d 00:00:00');
// 精确获取所有公开文章类型(包括post/page/自定义类型)
$post_types = array_merge(
['post', 'page'],
get_post_types([
'public' => true,
'_builtin' => false
])
);
// 安全处理文章类型
$post_types_placeholder = implode(',', array_fill(0, count($post_types), '%s'));
// 高性能SQL查询(使用索引优化)
$query = $wpdb->prepare(
"SELECT ID
FROM {$wpdb->posts}
WHERE post_status = 'publish'
AND post_type IN ({$post_types_placeholder})
AND post_date < %s
ORDER BY post_date DESC
LIMIT 1",
array_merge($post_types, [$today_start])
);
$last_post_id = (int) $wpdb->get_var($query);
// 直接存储到选项表
// update_option('_today_startpostid', $last_post_id, false);
return $last_post_id;
}
测试:
//测试:
$tid = zzw_set_today_start_post_id();
echo '目标结果:';
print_r($tid);

