向 Woocommerce 添加多个产品属性
Adding multiple product attributes to Woocommerce
我有一个表格可以将新书提交到我的 WooCommerce 网站。我以前只是将书的状况保存为产品属性。
// Set the book's condition
$condition = $_POST['condition'];
wp_set_object_terms( $product_id, $condition, 'pa_condition', true );
$att_condition = Array('pa_condition' =>Array(
'name'=>'pa_condition',
'value'=>$condition,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_condition);
这很容易。现在我正在尝试添加图书作者的姓名和流派,但是当我复制代码时,它只设置了最后一个产品属性。我知道我应该把它放在一个循环中,但我很愚蠢,否则我不知道我错过了什么。
$condition = $_POST['condition'];
$genre = $_POST['genre'];
$author = $_POST['author'];
wp_set_object_terms( $product_id, $condition, 'pa_condition', true );
$att_condition = Array('pa_condition' =>Array(
'name'=>'pa_condition',
'value'=>$condition,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_condition);
wp_set_object_terms( $product_id, $genre, 'pa_genre', true );
$att_condition = Array('pa_genre' =>Array(
'name'=>'pa_genre',
'value'=>$genre,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_genre);
wp_set_object_terms( $product_id, $author, 'pa_author', true );
$att_author = Array('pa_author' =>Array(
'name'=>'pa_author',
'value'=>$author,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_author);
在这种情况下,您可以尝试使用 add_post_meta
函数代替 update_post_meta
我在 上找到了解决方案。
我将我的表单变量放入一个数组中,然后 运行 这个 foreach 就成功了。
$my_product_attributes['condition'] = $_POST['condition'];
$my_product_attributes['genre'] = $_POST['genre'];
$my_product_attributes['authors'] = $_POST['author'];
foreach ($my_product_attributes as $key => $value) {
$key = 'pa_' . $key;
$attribute_values = explode(",", $value);
wp_set_object_terms($product_id, $attribute_values, $key, false);
$thedata[sanitize_title($key)] = Array(
'name' => wc_clean($key),
'value' => $attribute_values,
'postion' => '0',
'is_visible' => '1',
'is_variation' => '0',
'is_taxonomy' => '1'
);
update_post_meta($product_id, '_product_attributes', $thedata);
}
我有一个表格可以将新书提交到我的 WooCommerce 网站。我以前只是将书的状况保存为产品属性。
// Set the book's condition
$condition = $_POST['condition'];
wp_set_object_terms( $product_id, $condition, 'pa_condition', true );
$att_condition = Array('pa_condition' =>Array(
'name'=>'pa_condition',
'value'=>$condition,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_condition);
这很容易。现在我正在尝试添加图书作者的姓名和流派,但是当我复制代码时,它只设置了最后一个产品属性。我知道我应该把它放在一个循环中,但我很愚蠢,否则我不知道我错过了什么。
$condition = $_POST['condition'];
$genre = $_POST['genre'];
$author = $_POST['author'];
wp_set_object_terms( $product_id, $condition, 'pa_condition', true );
$att_condition = Array('pa_condition' =>Array(
'name'=>'pa_condition',
'value'=>$condition,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_condition);
wp_set_object_terms( $product_id, $genre, 'pa_genre', true );
$att_condition = Array('pa_genre' =>Array(
'name'=>'pa_genre',
'value'=>$genre,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_genre);
wp_set_object_terms( $product_id, $author, 'pa_author', true );
$att_author = Array('pa_author' =>Array(
'name'=>'pa_author',
'value'=>$author,
'is_visible' => '1',
'is_taxonomy' => '1'
));
update_post_meta( $product_id, '_product_attributes', $att_author);
在这种情况下,您可以尝试使用 add_post_meta
函数代替 update_post_meta
我在 上找到了解决方案。
我将我的表单变量放入一个数组中,然后 运行 这个 foreach 就成功了。
$my_product_attributes['condition'] = $_POST['condition'];
$my_product_attributes['genre'] = $_POST['genre'];
$my_product_attributes['authors'] = $_POST['author'];
foreach ($my_product_attributes as $key => $value) {
$key = 'pa_' . $key;
$attribute_values = explode(",", $value);
wp_set_object_terms($product_id, $attribute_values, $key, false);
$thedata[sanitize_title($key)] = Array(
'name' => wc_clean($key),
'value' => $attribute_values,
'postion' => '0',
'is_visible' => '1',
'is_variation' => '0',
'is_taxonomy' => '1'
);
update_post_meta($product_id, '_product_attributes', $thedata);
}