WordPress:指定分类无活动时自动发布备用文章
WordPress分类活动自动切换备用文章解决方案
实现代码
将以下代码添加到你的WordPress主题的functions.php文件中,或者创建一个简单的自定义插件(推荐后者,主题更新不会丢失代码):
// 监听文章状态变化,触发备用文章逻辑 add_action('transition_post_status', 'toggle_backup_post_based_on_category_events', 10, 3); function toggle_backup_post_based_on_category_events($new_status, $old_status, $post) { // 定义需要监控的分类和对应备用文章的slug $category_backup_map = array( 'live-theater' => 'no-live-theater-events-post', 'stage-artists' => 'no-stage-artists-events-post' ); // 只处理普通文章(如果你的活动用了自定义文章类型,替换这里的'post'为对应类型名称) if ($post->post_type !== 'post') { return; } // 遍历每个需要监控的分类 foreach ($category_backup_map as $category_slug => $backup_post_slug) { // 检查当前状态变化的文章是否属于该分类 $is_in_category = has_category($category_slug, $post); if (!$is_in_category) { continue; } // 获取该分类下已发布的活动文章总数(排除备用文章本身) $published_posts = get_posts(array( 'category_name' => $category_slug, 'post_status' => 'publish', 'post__not_in' => array(get_page_by_path($backup_post_slug, OBJECT, 'post')->ID), 'numberposts' => -1, 'fields' => 'ids' )); $published_count = count($published_posts); // 获取备用文章对象 $backup_post = get_page_by_path($backup_post_slug, OBJECT, 'post'); if (!$backup_post) { continue; } // 核心逻辑执行 if ($published_count === 0) { // 分类无已发布活动,发布备用文章 if ($backup_post->post_status !== 'publish') { wp_update_post(array( 'ID' => $backup_post->ID, 'post_status' => 'publish' )); } } elseif ($published_count >= 2) { // 分类已发布活动≥2,将备用文章设为草稿 if ($backup_post->post_status === 'publish') { wp_update_post(array( 'ID' => $backup_post->ID, 'post_status' => 'draft' )); } } } }
操作步骤
1. 创建备用文章
- 在WordPress后台新建两篇文章,编辑好「暂无活动...营销信息...」的内容和特色图片。
- 分别将两篇文章的文章别名(slug)设置为
no-live-theater-events-post和no-stage-artists-events-post,然后将文章状态改为草稿(不要提前发布)。 - 确保两篇文章分别归类到
live-theater和stage-artists分类下。
2. 添加代码到WordPress
方法一:主题functions.php
- 进入后台「外观」→「主题文件编辑器」,找到当前主题的
functions.php文件,将代码粘贴到文件末尾,点击「更新文件」。
注意:主题更新会覆盖
functions.php内容,若担心代码丢失,优先用方法二。
方法二:自定义插件
- 新建文本文件,命名为
category-backup-posts.php,粘贴代码后,在文件最顶部添加以下内容:
<?php /* Plugin Name: 分类备用文章自动切换 Description: 分类无活动时自动发布备用文章,活动充足时自动隐藏 Version: 1.0 */
- 将文件压缩为ZIP包,进入后台「插件」→「添加新插件」→「上传插件」,选择ZIP包安装并激活即可。
3. 测试逻辑
- 手动将
live-theater分类下所有已发布活动改为草稿,检查对应备用文章是否自动变为发布状态。 - 再将至少两篇活动文章改为发布状态,检查备用文章是否自动变回草稿。
内容的提问来源于stack exchange,提问作者William Cox
相关产品推荐
相关产品推荐

