You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:15:09