在wordpress中向产品添加多个属性值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在wordpress中向产品添加多个属性值相关的知识,希望对你有一定的参考价值。

我用逗号分隔字符串和属性值。例如

  1. 属性 红色 类型 - 防震,时尚,第三价值,

产品从第三方软件导入。也是属性等。

一切都很好,因为只有一个属性值,如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);
        }
    }

我知道我的代码的核心问题,但我不知道在哪里修复它,以及如何

答案

所以,我在这里过度思考。这是对我有用的代码

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);
}
另一答案

您可能正在使用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'
);

您需要更改显示的页面以迭代属性。

另一答案

你的代码的问题是你在同一个键的每个属性值上调用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);
}

以上是关于在wordpress中向产品添加多个属性值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中向多对多关系中添加字段?

提示:如何在 Ninja Forms Wordpress 插件中向文本区域添加占位符

在WordPress中向bodyu class()添加类

在wordpress中向附件添加自定义字段

在WordPress Admin中向媒体库列表添加ID字段

在 Woocommerce 中添加新产品时自动添加所有产品属性