如何批量更新 WooCommerce 商品分类:从 cat1 替换为 cat2

冬伟大大_3077

冬伟大大_3077

2026-07-27

654人浏览

原创

如何批量更新 WooCommerce 商品分类:从 cat1 替换为 cat2

本文介绍一种安全、高效的 php 脚本方案,通过 url 触发方式(如 domain.de/start.php?update_cats=yes)批量将 woocommerce 中所有属于指定旧分类(如 cat1)的商品,重新分配至新分类(如 cat2),避免手动操作与插件依赖。

本文介绍一种安全、高效的 php 脚本方案,通过 url 触发方式(如 domain.de/start.php?update_cats=yes)批量将 woocommerce 中所有属于指定旧分类(如 cat1)的商品,重新分配至新分类(如 cat2),避免手动操作与插件依赖。

在 WooCommerce 项目维护中,常需批量调整商品分类结构(例如品牌重组、类目优化或迁移)。手动逐个编辑效率低下且易出错,而借助 WordPress 原生函数编写轻量脚本,既能精准控制逻辑,又无需安装额外插件。

以下是一个经过验证的可部署 PHP 脚本(建议保存为 start.php 并置于网站根目录):

职徒简历
职徒简历

职徒简历是一款AI求职招聘工具,智能简历制作软件,基于GPT的简历优化和简历代写。

下载
<?php // start.php —— 安全可控的商品分类批量更新脚本
require_once( dirname(__FILE__) . '/wp-load.php' );

if ( isset( $_GET['update_cats'] ) && 'yes' === $_GET['update_cats'] ) {
    // 验证管理员权限(强烈建议添加)
    if ( ! current_user_can( 'manage_woocommerce' ) ) {
        wp_die( '权限不足:仅管理员可执行此操作。' );
    }

    add_action( 'init', 'change_products_categories' );
}

function change_products_categories() {
    // 查询所有属于旧分类(如 'cat-1')的商品
    $args = array(
        'status'   => 'publish',
        'limit'    => -1, // 获取全部,生产环境建议分批处理(见下方说明)
        'category' => array( 'cat-1' ), // 替换为你的旧分类 slug
        'return'   => 'ids', // 仅返回 ID,减少内存占用
    );

    $product_ids = wc_get_products( $args );

    if ( empty( $product_ids ) ) {
        error_log( '未找到属于旧分类的产品。' );
        return;
    }

    $new_category_slug = 'cat-2'; // 替换为你的新分类 slug

    foreach ( $product_ids as $product_id ) {
        // 注意:wp_set_object_terms 第三个参数为 taxonomy,WooCommerce 分类固定为 'product_cat'
        // 第四个参数 true 表示追加(保留其他分类);false 表示替换(移除旧分类,仅保留新分类)
        // 此处使用 false 实现「将 cat-1 替换为 cat-2」,即移除旧分类、添加新分类
        wp_set_object_terms( $product_id, $new_category_slug, 'product_cat', false );

        // 可选:清除该商品缓存以确保前端立即生效
        wp_cache_delete( 'product_' . $product_id, 'products' );
    }

    error_log( sprintf( '成功更新 %d 个商品的分类。', count( $product_ids ) ) );
    wp_die( '✅ 分类更新完成!共处理 ' . count( $product_ids ) . ' 个商品。' );
}

? 关键注意事项:

  • ✅ 安全性优先:脚本已内置 current_user_can('manage_woocommerce') 权限校验,防止未授权访问;生产环境务必启用。
  • ✅ 分类替换逻辑:wp_set_object_terms(..., false) 表示完全替换当前 product_cat 分类,而非追加。若需保留其他已有分类(如 cat1 → cat4,同时保留 cat3),应设为 true 并先手动移除旧分类,或改用 wp_remove_object_terms() + wp_set_object_terms() 组合。
  • ⚠️ 性能优化建议:对超千级商品,请勿使用 limit => -1。推荐分页处理(如每次 50 个),配合 AJAX 或 WP-CLI 调用,避免超时或内存溢出。
  • ? 分类标识:务必使用分类的 slug(如 'electronics'),而非名称(如 'Electronics'),否则无法匹配。
  • ? 上线前测试:先在开发环境运行,检查数据库 wp_term_relationships 表变更,并确认前台归档页与筛选逻辑正常。

执行方式:访问 https://yourdomain.com/start.php?update_cats=yes(需登录管理员账号)。成功后页面显示绿色提示,并记录日志供追溯。完成后建议删除该文件或增加 .htaccess 访问限制,杜绝安全隐患。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10264

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6061

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2095

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3808

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4514

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3531

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5037

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3962

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11922

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习