我用逗号分隔字符串和属性值。 例如
产品从第三方软件导入。也是属性等。
一切都很好,因为只有一个属性值,如Color-Red。 当有更多属性值时,属性部分中的产品编辑页面仅显示最后一个值。在这种情况下第三个值。
我的代码在这里:
foreach ($my_product_attributes as $key => $value) {
$key = 'pa_' . $key;
$commas = substr_count($value, ",");
if($commas >= 1){
$attribute_values = explode(",", $value);
foreach($attribute_values as $attribute){
wp_set_object_terms($p_id, $attribute, $key, false);
$thedata[sanitize_title($key)] = Array(
'name' => wc_clean($key),
'value' => $attribute,
'postion' => '0',
'is_visible' => '1',
'is_variation' => '0',
'is_taxonomy' => '1'
);
update_post_meta($p_id, '_product_attributes', $thedata);
}
}
我知道我的代码的核心问题,但我不知道在哪里修复它,以及如何
答案 0 :(得分:1)
所以,我在这里偷偷摸摸。这里的代码对我很有用
foreach ($my_product_attributes as $key => $value) {
$key = 'pa_' . $key;
$attribute_values = explode(",", $value);
wp_set_object_terms($p_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($p_id, '_product_attributes', $thedata);
}
答案 1 :(得分:0)
您可能正在使用foreach覆盖数组中的'value'键,因为您使用相同的数组键。
您可以尝试创建属性数组并将其添加到数据数组中。
foreach($attribute_values as $attribute){
$attribute_array[] = $attribute;
}
$thedata[sanitize_title($key)] = Array(
'name' => wc_clean($key),
'value' => $attribute_array,
'postion' => '0',
'is_visible' => '1',
'is_variation' => '0',
'is_taxonomy' => '1'
);
您需要更改显示的页面以迭代属性。
答案 2 :(得分:0)
您的代码存在的问题是您在同一个键的每个属性值上调用update_post_meta
。这些替换了先前为相同键设置的属性。试试这个(未经测试的)代码:
foreach ($my_product_attributes as $key => $value)
{
$key = 'pa_' . $key;
$commas = substr_count($value, ",");
if($commas >= 1){
$attribute_values = explode(",", $value);
foreach($attribute_values as $attribute)
{
//set object term for whatever reason you need.
wp_set_object_terms($p_id, $attribute, $key, false);
}
}
else
$attribute_values = $value;
$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($p_id, '_product_attributes', $thedata);
}