
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress怎么设置文章过期提醒?
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:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。

热门文章
