当前位置: 首页 > 知识库问答 >
问题:

以编程方式设置变量产品的默认属性值

隆向晨
2023-03-14

我正在构建一个站点,其中以编程方式插入可变产品(带有产品变体)。我成功地学习了本教程:
插入WooCommerce产品

我需要的只是缺少的东西:
如何为可变产品设置默认属性值?可能吗?

共有1个答案

曾歌者
2023-03-14

1). 您需要为每个变量产品在json数据中插入这段数组,如:

        "variations_default_attributes":
        [
            {
                "size"  : "Medium",
                 "color" : "Blue"
            }
        ]

或者

    "variations_default_attributes":
    {
        "size"  : "Medium",
        "color" : "Blue"
    }

数组由属性short slug(不带“pa””)和默认术语名称值组成。

2)。然后专用功能:

function insert_variations_default_attributes( $post_id, $products_data ){
    foreach( $products_data as $attribute => $value )
        $variations_default_attributes['pa_'.$attribute] = get_term_by( 'name', $value, 'pa_'.$attribute )->slug;
    // Save the variation default attributes to variable product meta data
    update_post_meta( $post_id, '_default_attributes', $variations_default_attributes );
}

3). 您需要在末尾添加一行来触发此函数:

function insert_product ($product_data)  
{
    $post = array( // Set up the basic post data to insert for our product

        'post_author'  => 1,
        'post_content' => $product_data['description'],
        'post_status'  => 'publish',
        'post_title'   => $product_data['name'],
        'post_parent'  => '',
        'post_type'    => 'product'
    );

    $post_id = wp_insert_post($post); // Insert the post returning the new post id

    if (!$post_id) // If there is no post id something has gone wrong so don't proceed
    {
        return false;
    }

    update_post_meta($post_id, '_sku', $product_data['sku']); // Set its SKU
    update_post_meta( $post_id,'_visibility','visible'); // Set the product to visible, if not it won't show on the front end

    wp_set_object_terms($post_id, $product_data['categories'], 'product_cat'); // Set up its categories
    wp_set_object_terms($post_id, 'variable', 'product_type'); // Set it to a variable product type

    insert_product_attributes($post_id, $product_data['available_attributes'], $product_data['variations']); // Add attributes passing the new post id, attributes & variations
    insert_product_variations($post_id, $product_data['variations']); // Insert variations passing the new post id & variations

    ## Insert variations default attributes passing the new post id & variations_default_attributes
    insert_variations_default_attributes( $post_id, $products_data['variations_default_attributes'] );    
}

代码进入函数。活动子主题(或主题)或任何插件文件中的php文件。

此代码经过测试并正常工作。

 类似资料:
  • 我有一个产品属性变化,有选项-小-20美元中等-25美元大-30美元 因为商店里的所有产品都有相同的价格。 如何以编程方式设置属性值的价格? 当我将3个属性变体按钮添加为变体时,它们会显示在产品页面上。 如何更改产品的价格时,"小"选项选择编程方式,而不是设置价格的变化选项在管理面板。

  • 问题内容: 一个Kibana新手想知道如何以编程方式设置默认的索引模式,而不是像在https://www.elastic.co/guide/en/上提到的那样在第一次查看Kibana UI时通过Web浏览器在Kibana UI上设置它。kibana / current / setup.html 问题答案: Elasticsearch将所有Kibana元数据信息存储在索引下。Kibana配置(例如和

  • 我在WooCommerce版本3+中创建了一个可变产品(父“产品”)。从一个WordPress插件中,我想以编程方式创建具有新属性值的产品变体(儿童“产品)。 变体属性已在WooCommerce中设置。 因此,每次创建一个变体时,都应以编程方式创建新属性的值,并在父变量product中设置新属性的值。 如何才能做到这一点呢?有可能吗? 更新:我已经为此编写了更多的代码行,并且尝试了许多方法来解决它

  • 行动时刻 - 设置变量的默认值 我们并不总是确定变量是否存在。 Unlang为我们提供了语法,以便在变量不存在时指定默认值。 我们将再次通过修改上一个练习来证明这一点。 我们将使用radtest首先在请求中包含Framed-Protocol = PPP,并将其排除在外。 如果Framed-Protocol AVP不存在,我们将返回一个默认字符串。 编辑FreeRADIUS配置目录下的sites-a

  • 所以我需要为@Transactional注释设置timeout参数。这个属性将来自一个属性文件,我不能这样做,因为我遇到了“注释属性transactional.timeout的值必须是常量表达式”。像这样的东西

  • 问题内容: 如何确保从hibernate.cfg.xml加载所有属性,然后以编程方式添加其他属性?我看到了以下代码片段,但它看起来像是全新的配置,而不是现有配置的补充。 问题答案: 您显示的代码段是您所需要的。只需使用您现有的配置,而不是创建一个新的配置即可。 如果不是您实例化配置(例如,spring),则需要扩展创建它的类。