讲师中心 微信公众号
AI工具推荐 视频效率加速

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

冬伟大大_3077

冬伟大大_3077

发布时间:2026-07-27 18:12:36

|

674人浏览过

|

来源于php中文网

原创

如何批量更新 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 并置于网站根目录):

<?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 访问限制,杜绝安全隐患。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

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

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

10324

2023.09.01

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

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

6081

2023.10.11

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

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

2095

2023.10.11

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

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

3828

2023.10.23

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

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

4534

2023.10.23

html怎么上传
html怎么上传

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

3551

2023.11.03

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

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

5057

2023.11.09

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

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

3962

2023.11.13

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

0

2026.10.10

热门下载

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

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn