WordPress开发笔记

WordPress获取今日之前最后发布的文章ID的封装函数(实现代码示例)

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);