如何将WooCommerce新建产品默认类型设为External而非Simple
实现WooCommerce新建产品自动设为External类型的方法
你给的代码是修改指定ID的已有产品类型,没法实现新建产品自动设置的需求,得换个钩子和写法,下面是具体实现步骤:
一、替换为适配新建产品的代码
直接用这个代码,它会在任何方式创建产品时自动触发:
// 自动将新建产品设置为External类型 function auto_set_external_product_type( $product_id ) { // 移除默认的Simple产品类型标记 wp_remove_object_terms( $product_id, 'simple', 'product_type' ); // 给产品添加External类型标记 wp_set_object_terms( $product_id, 'external', 'product_type', true ); } // 绑定到产品创建完成的钩子,覆盖默认类型 add_action( 'woocommerce_new_product', 'auto_set_external_product_type' );
代码说明:
woocommerce_new_product是WooCommerce专门用于产品创建完成的钩子,不管你是后台手动添加、前台表单提交还是用API创建,都会触发这个动作- 不用写固定产品ID,
$product_id会自动获取刚创建的产品ID
二、安全添加代码到网站的方法
新手别直接乱改主题文件,推荐两种安全方式:
- 方式一:用子主题的functions.php
- 登录WordPress后台,进入「外观」→「主题文件编辑器」
- 在右侧文件列表里找到当前启用的子主题的
functions.php(一定要选子主题,父主题更新会清空修改内容) - 把上面的代码粘贴到文件最末尾,点击「更新文件」
- 方式二:用代码片段插件(更推荐)
- 后台搜索安装「Code Snippets」插件并激活
- 进入「Snippets」→「Add New」
- 给片段起个名字(比如“自动设置External产品类型”),粘贴代码,点击「Save Changes and Activate」激活即可
注意事项
- 操作前记得备份网站和数据库,以防出错
- 如果代码没生效,检查是否有其他WooCommerce相关插件冲突,暂时禁用其他插件测试
- 不要直接修改父主题的functions.php,否则主题更新后代码会丢失
内容的提问来源于stack exchange,提问作者sevenkader
相关产品推荐
相关产品推荐

