WordPress模板插件定制

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

WordPress怎么设置文章过期提醒?

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

哈喽各位老铁,最近有朋友问我,WordPress发了文章,过段时间想提醒自己更新或者下架,咋整啊?总不能天天翻后台瞅吧?这不,今天就给你们扒拉扒拉,三种方法,从简单到进阶,总有一款适合你!

方法一:插件大法好,新手闭眼入

要说最简单的,肯定是插件啊!不用写一行代码,点点鼠标就完事,简直是新手福音。我常用的是 Post Expirator(文章过期插件),免费还好用,后台搜名字就能找到,跟菜市场挑白菜似的简单。

安装激活后,写文章的时候往下拉,会看到个“Post Expirator”设置框,选个过期时间(比如“2024-12-31 23:59”),然后关键来了——过期后干啥?这里选“发送邮件提醒”,再填你自己的邮箱,齐活!

不过得注意啊,WordPress发邮件有时候不太靠谱,建议先在“设置-邮件”里配个SMTP(用WP Mail SMTP插件就行,傻瓜式操作),不然提醒邮件发到垃圾邮箱里,等于白搭,到时候文章过期了你都不知道,那可就尴尬了。

方法二:自己写代码,灵活度拉满

要是你跟我一样,喜欢折腾,想自定义提醒内容(比如加个文章链接、过期原因),那就得撸代码了。别慌,不难,跟着我一步步来,保准你能学会!

第一步:先备份!备份!备份! 重要的事说三遍,改代码前先把主题文件夹复制一份,别回头把主题搞崩了找我哭鼻子。

第二步:加个自定义字段让用户填过期时间
打开主题的functions.php(别找错了,是当前用的主题文件夹里的),加这段代码:

// 给文章加个“过期时间”输入框
function add_expire_date_meta_box() {
    add_meta_box(
        'expire_date_box', // ID
        '文章过期时间', // 标题
        'render_expire_date_box', // 回调函数
        'post', // 文章类型
        'side', // 位置(侧边栏)
        'default' // 优先级
    );
}
add_action('add_meta_boxes', 'add_expire_date_meta_box');

// 渲染输入框
function render_expire_date_box($post) {
    $expire_date = get_post_meta($post->ID, '_expire_date', true);
    echo '<input type="datetime-local" name="expire_date" value="'.$expire_date.'">';
}

// 保存过期时间
function save_expire_date_meta($post_id) {
    if (isset($_POST['expire_date'])) {
        update_post_meta($post_id, '_expire_date', sanitize_text_field($_POST['expire_date']));
    }
}
add_action('save_post', 'save_expire_date_meta');

这段代码会在文章编辑页侧边栏加个“过期时间”输入框,填完点保存就存数据库里了,简单不?

第三步:写个定时任务检查过期文章
光存着不行啊,得让系统自动检查。继续在functions.php里加:

// 每天检查一次过期文章
function check_expired_posts() {
    $today = current_time('Y-m-d H:i:s');
    $posts = get_posts([
        'post_type' => 'post',
        'posts_per_page' => -1, // 查所有文章
        'meta_key' => '_expire_date',
        'meta_value' => $today,
        'meta_compare' => '<=' // 过期时间小于等于今天
    ]);

    foreach ($posts as $post) {
        $post_title = get_the_title($post->ID);
        $post_url = get_permalink($post->ID);
        $to = '你的邮箱@example.com'; // 改成你自己的邮箱
        $subject = '文章过期提醒:'.$post_title;
        $message = "老铁,这篇文章过期了:\n标题:$post_title\n链接:$post_url";
        wp_mail($to, $subject, $message); // 发邮件
    }
}

// 注册定时任务(每天凌晨1点执行)
if (!wp_next_scheduled('check_expired_posts_event')) {
    wp_schedule_event(strtotime('01:00:00'), 'daily', 'check_expired_posts_event');
}
add_action('check_expired_posts_event', 'check_expired_posts');

这段代码会每天凌晨1点检查所有文章,过期了就给你发邮件。注意把你的邮箱@example.com改成自己的邮箱,不然提醒发到我这儿来了可不管啊!

进阶:给过期文章标个“已过期”状态

光提醒还不够?想在后台一眼看出哪些文章过期了?简单,再加几行代码,给过期文章整个自定义状态:

// 注册“已过期”状态
function register_expired_post_status() {
    register_post_status('expired', [
        'label' => '已过期',
        'public' => true,
        'exclude_from_search' => true,
        'show_in_admin_all_list' => true,
        'show_in_admin_status_list' => true,
        'label_count' => _n_noop('已过期 (%s)', '已过期 (%s)')
    ]);
}
add_action('init', 'register_expired_post_status');

// 过期时自动改状态
function update_expired_post_status($post) {
    wp_update_post([
        'ID' => $post->ID,
        'post_status' => 'expired'
    ]);
}
// 在check_expired_posts函数里加一句调用:update_expired_post_status($post);

这样过期文章在后台就会显示“已过期”状态,不用一个个点进去看,效率杠杠的!

最后叨叨两句

插件适合嫌麻烦的新手,代码适合想折腾的玩家——各有各的好。不管用哪种,记得先在测试环境试试(比如本地搭个WordPress),别直接在正式站瞎鼓捣,不然出问题了用户跑光了可别怪我没提醒你!

行了,今天就唠到这儿,有问题评论区拍砖,我看到了就回!记得点赞收藏,不然下次想找找不到别怪我没提醒你啊!

Tags:

WordPress模板插件定制