如何通过WooCommerce REST API批量添加产品标签?
解决WooCommerce REST API批量添加标签的问题
问题描述
我使用以下代码通过WooCommerce REST API添加产品:
<?php $data = [ 'name' => 'my title', 'type' => 'simple', 'regular_price' => '19', 'description' => 'my description', 'categories' => [ [ 'id' => 9 ], ], 'tags' => [ [ 'name' => 'my tag', ], ], ]; print_r($woocommerce->post('products', $data)); ?>
现在我有一个数量不固定的标签数组:
array (size=3) 'tag1' => string 'tag1' (length=4) 'tag2' => string 'tag2' (length=4) 'tag3' => string 'tag3' (length=4)
直接将这个数组放入上述代码的tags字段后无法成功提交,请问该如何解决?
解决方法
WooCommerce REST API要求tags字段的格式是由包含name键的关联数组组成的索引数组,你现有的标签数组是键值重复的关联数组,结构不符合API要求,需要先转换格式。
步骤1:转换标签数组格式
使用array_map函数将现有标签数组转换为API接受的格式:
// 你的原始标签数组 $original_tags = [ 'tag1' => 'tag1', 'tag2' => 'tag2', 'tag3' => 'tag3' ]; // 转换为API要求的格式 $formatted_tags = array_map(function($tag_name) { return ['name' => $tag_name]; }, $original_tags);
步骤2:替换原代码中的tags字段
将转换后的数组代入原代码的tags字段:
<?php $original_tags = [ 'tag1' => 'tag1', 'tag2' => 'tag2', 'tag3' => 'tag3' ]; $formatted_tags = array_map(function($tag_name) { return ['name' => $tag_name]; }, $original_tags); $data = [ 'name' => 'my title', 'type' => 'simple', 'regular_price' => '19', 'description' => 'my description', 'categories' => [ ['id' => 9] ], 'tags' => $formatted_tags // 使用转换后的标签数组 ]; print_r($woocommerce->post('products', $data)); ?>
补充说明
如果你的原始标签数组是纯值的索引数组(比如['tag1', 'tag2', 'tag3']),同样可以用上述array_map方法转换,逻辑完全一致。
内容的提问来源于stack exchange,提问作者seyedrezabazyar
相关产品推荐
相关产品推荐

