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

使用PHP清理WordPress文章分类:仅保留Business主分类

问题分析与修复方案

你的代码不生效核心是两个关键错误:

  1. get_posts参数使用错误
    get_posts的category参数只接受分类ID/ID数组,若想用分类标识,需用category_name参数传入分类slug(不是显示名称),直接传「Business」无法正确筛选文章。

  2. 分类判断逻辑错误
    wp_get_post_categories()默认返回分类ID数组,不是分类名称。你用in_array('Business', $categories)判断,永远不会成立——数组里是数字ID,不是字符串名称。


修复后的代码

<?php
// 获取Business分类的ID,用slug匹配更可靠
$business_cat = get_category_by_slug('business');
if (!$business_cat) {
    die('Business分类不存在');
}
$business_cat_id = $business_cat->term_id;

// 获取所有Business分类下的文章,posts_per_page=-1表示获取全部
$posts = get_posts(array(
    'category' => $business_cat_id,
    'posts_per_page' => -1,
    'post_type' => 'post',
));

foreach ($posts as $post) {
    $post_cats = wp_get_post_categories($post->ID);
    
    // 仅当文章有多个分类时,替换为只保留Business分类
    if (count($post_cats) > 1) {
        wp_set_post_categories($post->ID, array($business_cat_id), true);
    }
}

注意事项

  • 确认分类slug:若你的Business分类slug不是business(比如是business-topics),需修改get_category_by_slug里的参数,可在WordPress后台「文章-分类」中查看。
  • 执行建议:可将代码临时添加到主题functions.php,或创建单独PHP文件放在网站根目录执行,完成后立即删除,避免重复执行。
  • 数据备份:操作前务必备份数据库,防止误操作丢失数据。

内容的提问来源于stack exchange,提问作者ZeusDev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:40:22