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

如何在Woocommerce中以编程方式保存产品属性

满才
2023-03-14

我正在使用wp\u insert\u post()在woocommerce中以编程方式添加产品。除了产品属性外,其他所有功能都正常工作。除非我从管理员处单击“更新”,否则产品页面视图中不会显示产品属性。

我正在添加成吨的产品,所以有没有办法在产品页面的下拉列表中显示变化。

这是我的代码,它工作正常,所有内容都放在正确的字段中,如果不单击“更新”,它就不会在产品页面上显示选项。

$new_post = array(
      'ID' => '',
      'post_author' => 1,           
      'post_title' => 'title of product',
      'post_status' => 'publish',
      'post_type' => 'product'
    );
$post_id = wp_insert_post($new_post);

wp_set_object_terms($post_id, 'variable', 'product_type', false); 

$my_post = array(
  'post_title'    => 'Variation # of ' . esc_attr(strip_tags(  $post_title)),
  'post_name'     => 'product-' . $post_id . '-variation-',
  'post_status'   => 'publish',
  'post_parent'   => $post_id,
  'post_type'     => 'product_variation',
  'guid'          =>  home_url() . '/?product_variation=product-' . $post_id . '-variation-'
);
wp_insert_post( $my_post );
$variable_id = $post_id + 1;

update_post_meta( $variable_id, '_price', 8.50 );
update_post_meta( $variable_id, '_regular_price', '8.50');

 $product_attributes['type'] = array(
            'name' => htmlspecialchars(stripslashes('Options')),
            'value' => "black|blue",
            'position' => 1,
            'is_visible' => 1,
            'is_variation' => 1,
            'is_taxonomy' => 0
    );


update_post_meta( $post_id, '_product_attributes', $product_attributes);    

共有1个答案

糜俊彦
2023-03-14

此代码将创建具有2个属性(重量、品牌)和2个变体的产品

//Create main product
$product = new WC_Product_Variable();

$att_var = array();
//Create the attribute object with name weight
$attribute = new WC_Product_Attribute();
$attribute->set_id( 0 );
$attribute->set_name( 'weight' );
$attribute->set_options( array(
        '50g',
        '100g',
        '150g'
) );
$attribute->set_position( 0 );
$attribute->set_visible( 1 );
$attribute->set_variation( 1 );
$att_var[] = $attribute;

//Create the attribute object with name brand
$attribute = new WC_Product_Attribute();
$attribute->set_name( 'brand' );
$attribute->set_options( array(
        'Parle-G',
        'Britania'
) );
$attribute->set_position( 1 );
$attribute->set_visible( 1 );
$attribute->set_variation( 1 );
$att_var[] = $attribute;

$product->set_attributes($att_var);
$product->set_name('Product 3');
$product->set_status('publish');
$product->set_sku(12345);

//Save main product to get its id
$product->set_category_ids([47, 56] );
$id = $product->save();

//variation 1
$variation = new WC_Product_Variation();
$variation->set_regular_price(10);
$variation->set_sale_price(10);
$variation->set_stock_quantity(12);
$variation->set_manage_stock(True);
$variation->set_weight('50g');
$variation->set_parent_id($id);

$variation->set_attributes(array(
        'weight' => '50g',
        'brand' => 'Parle-G'
));

//Save variation, returns variation id
$variation->save();

//variation 2
$variation_new = new WC_Product_Variation();
$variation_new->set_regular_price(15);
$variation_new->set_sale_price(12);
$variation_new->set_stock_quantity(20);
$variation_new->set_manage_stock(True);
$variation_new->set_weight('100g');
$variation_new->set_parent_id($id);

//Set attributes requires a key/value containing
$variation_new->set_attributes(array(
        'weight' => '100g',
        'brand' => 'Britania'
));


//Save variation, returns variation id
$variation_new->save();
 类似资料:
  • 每次根据其他几个字段的内容保存产品时,我都希望更新产品在我的商店中的属性。 然而,我正在努力让我的属性正确出现。 最初,我试图使用以下功能根据这个问题的公认答案更新产品: 这将添加到了分类法的可用术语列表中,但在我检查产品属性时,它们不可见。 接下来,我尝试了上述问题中第二个答案的变体: 这也无法更新产品的属性。 在这一点上,我不知道下一步该尝试什么。使用操作似乎是有效的,因为这个术语确实被添加到

  • 如何从插件为WooCommerce创建属性?我只发现: 从这个问题 但这种方法需要某些产品的id。我需要生成一些未附加到任何产品的属性。

  • 我需要如此的帮助。我试图以编程方式更新WooCommerce产品库存数量。我们有一个供应商饲料给我们通过一些JSON。我可以从提要中读取股票,并可以正确地从后元数据中提取数据。我使用最新版本的WP和WOO。PHP是7.2 下面是我如何从SKU中查找产品ID。 这将返回正确的ID,我可以使用它查看已存在的当前元数据: 然后我更新我从提要中得到的股票。这可以是从零到x或x到零的股票,以及介于两者之间的

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

  • 我试图以编程方式批量添加WooCommerce中的产品,但出于某种原因,它只是添加了第一个产品。我正在向一个应用程序发出请求,该应用程序返回带有产品名称和描述的JSON响应。到目前为止,我的代码看起来像下面的代码:

  • 问题内容: 我想以编程方式创建具有两个新的Variant属性的变量产品(“父”产品)-所有这些都来自WordPress插件(因此,无需向API发送HTTP请求)。 这两个变量属性也应该动态创建。 如何才能做到这一点 ? (使用WooCommerce版本3) 更新:我已经在此上编写了更多行代码,并使用wooCommerce对象尝试了许多解决方案,并使用WordPress数据库在数据库中添加了有关术语