WordPress模板插件定制

您现在的位置是:首页 > WordPress教程WordPress教程

先玩基础的:WordPress自带定时功能,够用80%场景

查看 WP集市 的更多文章WP集市 2025-08-21 【WordPress教程】 925人已围观

WordPress定时发文章?这几招让你躺着更新内容!

咱做自媒体或者维护网站的,天天手动发文章多累啊——有时候灵感来了写一堆草稿,结果没时间天天点“发布”;有时候想卡点发(比如早上8点、晚上7点流量高峰),结果一忙就忘了。这时候“定时发布”就派上用场了,WordPress这玩意儿其实自带这功能,不够用还有插件,程序员想折腾还能自己写代码,今天咱就掰开揉碎了说。

先玩基础的:WordPress自带定时功能,够用80%场景

其实WordPress后台早就藏着这功能,估计很多人没注意。新建文章的时候,右上角“发布”那块儿,默认是“立即发布”,旁边有个小齿轮图标,点一下就展开了——看到没?“发布时间”,直接选日期时间就行,选好点“确定”,然后别点“发布”,点“保存草稿”!对,得保存成草稿,不然直接发了。等时间一到,它自己就发出来了,跟闹钟似的。

不过有个坑得注意:时区得对!你以为设的是北京时间,结果服务器时区是UTC,差8小时,早上8点变成凌晨0点,读者都睡了,白搭。怎么看?后台“设置→常规”,拉到最下面“时区”,选“北京”或者“UTC+8”,准没错。

不够用?插件来凑!复杂定时就靠它

自带功能只能单个文章设时间,要是想搞“每周一三五下午3点自动发一篇”,或者“文章发出去7天自动隐藏”,就得用插件了。推荐个老牌的:Advanced Post Scheduler(高级文章调度器),直接后台搜插件安装,启用后编辑文章页面会多一个“调度”选项卡。

比如想每周三发?点“重复发布”,选“每周”,勾上“星期三”,时间设15:00,搞定。还能设置“发布后X天转为草稿”,适合发限时活动文章,不用手动删,省心。插件这玩意儿,就是懒人福音,不用自己写代码,点点鼠标就行——不过别装太多插件啊,后台卡得跟老年机似的,就得不偿失了。

程序员专属:自己写代码,想咋定就咋定

要是你跟我一样,觉得插件不够灵活(比如想根据天气发文章?或者从Excel导入发布时间?),那就自己写代码。WordPress有个“WP-Cron”机制,虽然不是服务器级别的真·Cron(后面说坑),但对付定时任务够了。

举个例子:咱们想每天凌晨2点,自动发布标了“定时发布”标签的草稿。先得存发布时间,比如在文章编辑页加个自定义字段_publish_time,存时间戳。然后写代码:

// 第一步:注册定时事件,每天凌晨2点执行
function my_schedule_publish() {
    // 先看看有没有注册过,避免重复
    if (!wp_next_scheduled('my_daily_publish_hook')) {
        // 设每天凌晨2点,时间戳格式是小时*3600+分钟*60
        $next_run = strtotime('today 02:00:00');
        // 如果今天2点过了,就设明天的
        if ($next_run < time()) $next_run += 86400;
        wp_schedule_event($next_run, 'daily', 'my_daily_publish_hook');
    }
}
// 网站加载时注册事件
add_action('wp', 'my_schedule_publish');

// 第二步:写发布文章的函数
function auto_publish_posts() {
    // 查所有草稿,且自定义字段_publish_time <= 当前时间的
    $posts = get_posts([
        'post_status' => 'draft',
        'posts_per_page' => -1, // 查所有
        'meta_query' => [
            [
                'key' => '_publish_time',
                'value' => current_time('timestamp'), // 当前时间戳
                'compare' => '<='
            ]
        ]
    ]);
    // 循环发布
    foreach ($posts as $post) {
        wp_update_post([
            'ID' => $post->ID,
            'post_status' => 'publish' // 改为发布状态
        ]);
    }
}
// 绑定到定时事件的钩子
add_action('my_daily_publish_hook', 'auto_publish_posts');

代码看着长,其实就两步:注册个每天2点执行的“闹钟”,闹钟响了就查符合条件的草稿,批量发布。不过WP-Cron有个毛病:得网站有人访问才触发。要是你网站一天没几个人看,闹钟可能“睡过头”。解决办法?用服务器的真·Cron,比如Linux服务器,编辑crontab:

# 每分钟访问一次wp-cron.php,确保定时任务执行
* * * * * wget -q -O - https://你的域名/wp-cron.php?doing_wp_cron >/dev/null 2>&1

这样不管有没有人访问,服务器每分钟都“叫”一下WP-Cron,稳如老狗。

总结:新手用自带,懒人用插件,折腾用代码

其实定时发布这事儿,核心就是“让机器替你干活”。新手直接用自带功能,改改发布时间就行;想每周/每月重复发,装个Advanced Post Scheduler;程序员想玩花的,用WP-Cron+自定义代码,再配合服务器Cron兜底。

总之啊,别天天守着后台点“发布”了,提前把文章写好,设好时间,该摸鱼摸鱼,该陪家人陪家人——咱们搞技术的,不就是为了让生活更轻松嘛,你说对吧?

Tags:

WordPress模板插件定制