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

Woocommerce-向可变产品添加新属性值

陶英纵
2023-03-14

第一件事:这是我在stackoverflow上发布的第一个问题。换句话说,这是我在你们的帮助下无法独自解决的第一个问题(非常感谢你们,你们让世界运转起来!)。

我的问题与@LoictheAztec对另一个问题的回答有关(我原本计划在那篇文章的评论中发布我的问题,但由于我是/曾经是潜伏者,我缺乏这样做的声誉):https://stackoverflow.com/a/47766413/13263330

我已经创建了一个可变产品,并希望以编程方式向该产品添加新的属性值。

我从上面的链接复制并稍微修改了代码,但是当我试图执行它时,我收到了以下错误:

Notice: wc_get_product was called incorrectly. wc_get_product should not be called before the woocommerce_init, woocommerce_after_register_taxonomy and woocommerce_after_register_post_type actions have finished. Backtrace: require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('plugins_loaded'), WP_Hook->do_action, WP_Hook->apply_filters, execute_active_snippets, execute_snippet, eval, create_product_variation, wc_get_product, wc_doing_it_wrong

Fatal error: Uncaught Error: Call to a member function get_name() on boolean

问题似乎主要与上面发布的链接中的以下代码行有关:

'post_title'  => $product->get_name()

出于提醒和方便起见,产品变量定义如下:

$product = wc_get_product($product_id)

属性值被正确地添加到变量产品中,因此代码执行了我预期的和预期的操作,但站点仍然崩溃。

据我所知,发生的问题(及其原因)可能与以下方面有关:

  1. 我在代码中所做的修改(已经用默认代码和@LoictheAztec在其帖子中给出的示例进行了检查,同样的问题)

任何帮助都是高度赞赏的。

共有1个答案

卫景明
2023-03-14

如果您使用的是代码段插件,请尝试以下代码。(在钩子中运行示例代码)

add_action('woocommerce_after_register_post_type', 'test_create_product_variation');
function test_create_product_variation(){
    $parent_id = 746; // Or get the variable product id dynamically

    // The variation data
    $variation_data =  array(
        'attributes' => array(
            'size'  => 'M',
            'color' => 'Green',
        ),
        'sku'           => '',
        'regular_price' => '22.00',
        'sale_price'    => '',
        'stock_qty'     => 10,
    );

    // The function to be run
    create_product_variation( $parent_id, $variation_data );
}
 类似资料:
  • 我正在尝试向现有的WooCommerce产品添加一个具有多个值的新属性。 这是我正在使用的代码。我把它简化了一点,使它更清楚。 该属性显示在产品的属性列表中。然而,条款没有添加。 数据库中也有这些术语: 我做错了什么?我做了很多研究,读了一些其他的问题,但它们对我没有帮助。 在WooCommerce中以编程方式创建新产品属性

  • 我正在使用此代码添加自定义属性 这个代码的结果我得到了添加只是产品属性名称没有术语值... 我找了很多,但没有得到任何答案。

  • 我正在重写AJAX函数,以便使用WooCommerce添加产品,这样我也可以将属性发送到购物车(这不是开箱即用的)。 在通过AJAX添加变量产品后,我按照更新WooCommerce购物车的说明进行了操作——这正是我想要的——但它并不完全有效。 当我注销时,一切都很好。但是,当我登录Wordpress时,PHP覆盖不起作用/被忽略。我没有收到任何错误,也没有向购物车添加任何产品。我尝试了许多不同的方

  • 目标:在一个按钮点击中添加多个可变产品到购物车。 我试着将这段代码放入循环中,但它不起作用。 但是这种方法不能解决问题,因为我需要在一个按钮点击中添加几个产品变体。 所有的建议都将不胜感激。多谢了。

  • 如何通过代码为woocommerce属性添加值?我已经创建了一个名为“Dispatch time”(分类法:pa_Dispatch)的属性,现在我想为特定产品的Dispatch属性添加值。 如何通过编程实现这一点?

  • 问题内容: 我已经组装好了将链接添加到购物车中的可变产品的链接,就像这样,但是我对如何“刷新”购物车而不重新加载页面感到困惑。我的猜测是,我没有正确地向购物车请求中添加此AJAX,因此未调用woocommerce_add_to_cart_fragments(我相信我的购物车HTML会在此处放置刷新)。 如果有人能指出我正确的方向,我将不胜感激。Variable / AJAX / WooCommer