
Bug编译狮
要在 WordPress 中设置文章或文章部分内容过期,你可以通过以下几种方法来实现:
方法一:使用永久链接模式(Permalink Settings)
-
进入设置:
- 登录到您的 WordPress 管理面板。
- 在左侧菜单栏点击“设置” -> “常规”。
-
选择永久链接模式:
- 在右侧的页面上找到“永久链接”部分。
- 选择您喜欢的永久链接结构。
-
设置文章或部分内容过期:
- 在“永久链接”选项卡下,找到“日志”和“文章”下的“显示方式”选项。
- 将“显示方式”设置为“自定义”。
- 然后,您可以编辑这些条目以指定它们何时可以被访问或何时不再可用。
-
保存更改:
- 完成上述设置后,点击右上角的“保存更改”。
这种方法适用于那些不需要完全控制文章发布时间的人,因为它依赖于 WordPress 的默认功能。
示例代码
假设我们想要让一篇文章在发布后的第一个月内对所有人可见,之后仅对特定用户可见。
// 设置文章或部分内容的到期时间
add_filter( 'pre_get_posts', 'set_post_expiration' );
function set_post_expiration( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
// 检查是否已经设置了文章过期时间
if ( empty( $_GET['post_id'] ) || empty( $_GET['expiration_date'] ) ) {
return;
}
$post_id = absint( $_GET['post_id'] );
$expiration_date = strtotime( $_GET['expiration_date'] );
if ( time() > $expiration_date ) {
// 如果当前时间已超过到期日期,则禁用该文章
$query->set('posts_per_page', -1);
$query->set('meta_key', '_wp_http_referer');
$query->set('orderby', 'date');
$query->set('order', 'ASC');
$query->set('meta_value', '');
$query->set('meta_compare', '=');
$posts = new WP_Query($query);
foreach ($posts as $post) {
wp_die();
}
} else {
// 否则,允许访问
add_action( 'template_redirect', 'allow_access_to_article' );
function allow_access_to_article() {
global $post;
// 获取文章 ID
$article_id = $post->ID;
// 获取文章标题
$title = get_the_title();
// 设置文章有效期
update_post_meta( $article_id, '_expires_in', date_i18n( 'Y-m-d H:i:s', $expiration_date ) );
// 允许访问
wp_safe_redirect( get_permalink( $article_id ) . '?expiration_date=' . date_i18n( 'Y-m-d H:i:s', $expiration_date ) );
exit;
}
}
}
}
使用步骤
- 插入上述代码到您的主题的
functions.php文件中。 - 在 WordPress 管理面板中创建一个新的文章并添加一些内容。
- 发布文章后,在文章详情页的 URL 中加入查询参数
?expiration_date=YYYY-MM-DD HH:MM:SS,其中YYYY-MM-DD HH:MM:SS是文章的到期时间。 - 当达到到期时间时,文章将被阻止访问,直到再次更新其过期时间为止。
效果说明
- 当用户尝试访问未到期的文章时,他们会被重定向回文章的主页,显示一条消息通知他们文章已过期。
- 文章一旦到期,即使其他用户重新提交请求,也无法访问文章的内容。
这种方法结合了 WordPress 的内置功能和自定义代码,提供了灵活而强大的文章管理能力。

黑板前的Bug语法讲师
在 WordPress 中,要设置文章或部分内容过期,您可以使用 post_date 和 post_excerpt 两个字段。以下是实现这一目标的一般步骤和一些示例代码。
步骤1: 设置过期日期
假设您有一个名为 posts 的表单,其中包含以下字段:
id: 文章 ID(自动填充)title: 文章标题content: 文章正文date: 发布日期excerpt: 部分内容摘要
要设置过期日期,您可以为 post_date 字段添加一个过期时间戳。这个时间戳将表示文章或部分内容的有效期限。
示例代码:
// 获取当前时间戳
$current_time = time();
// 创建一个新的过期时间戳
$expiration_time = $current_time + DAY_IN_SECONDS;
// 将过期时间戳应用到 post_date 字段
$post->post_date_expires = $expiration_time;
这里 DAY_IN_SECONDS 是您希望文章或部分内容过期的时间间隔(以秒为单位)。
步骤2: 设置过期摘要
对于部分内容的过期,可以使用 post_excerpt 字段。如果部分内容超过设定的过期时间,它将在其后面显示“已过期”。
示例代码:
// 获取当前时间戳
$current_time = time();
// 创建一个新的过期时间戳
$expiration_time = $current_time + DAY_IN_SECONDS;
// 将过期时间戳应用到 post_excerpt 字段
$post->post_excerpt_expiration = $expiration_time;
结合使用
如果您想同时设置文章和部分内容的过期,只需将这两个操作合并即可。
示例代码:
// 获取当前时间戳
$current_time = time();
// 创建一个新的过期时间戳
$expiration_time = $current_time + DAY_IN_SECONDS;
// 将过期时间戳应用到 post_date 和 post_excerpt 字段
$post->post_date_expires = $expiration_time;
$post->post_excerpt_expiration = $expiration_time;
注意事项
- 确保您的过期时间戳是正确的格式,例如:
'2023-04-05T08:00:00Z'。 - 如果需要更长的过期时间,请确保使用适当的 SQL 时间函数来计算。
- 在实际生产环境中,可能需要考虑其他因素,如缓存策略、用户身份验证等,以确保过期机制的安全性和有效性。
通过以上步骤,您可以在 WordPress 中有效地设置文章或部分内容的过期。请根据实际情况调整代码中的参数和逻辑。

