我使用wc_get_product函数来更新产品的价格。我对ID80进行了硬编码,看看它是否正常工作,但它可能返回false。
我不明白为什么,因为我可以清楚地看到我的第一个产品的ID = 80。
我使用这个插件https://wordpress.org/plugins/code-snippets/
代码是这样的:
$product = wc_get_product( 80 );
$product->set_sale_price( 100 );
$product->set_price( 100 );
$product->save();你能告诉我问题出在哪里吗?我得到了这个错误:
Na řádku č. 2 v souboru /data/a/7/a7833039-4699-4c19-96a3-4e99cb97fa3f/premi.cz/web/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code došlo k chybě typu E_ERROR. Chybová zpráva: Uncaught Error: Call to a member function set_sale_price() on bool in /data/a/7/a7833039-4699-4c19-96a3-4e99/premi.cz/web/wp-content/plugins/code-snippets/php/snippet-ops.php(446) : eval()'d code:2
Stack trace:
#0 /data/a/7/a7833039-4699-4c19-96a3-4e99cb97fa3f/premi.cz/web/wp-content/plugins/code-snippets/php/snippet-ops.php(446): eval()
#1 /data/a/7/a7833039-4699-4c19-96a3-4e99cb97fa3f/premi.cz/web/wp-content/plugins/code-snippets/php/snippet-ops.php(534): execute_snippet('$product = wc_g...', 6)
#2 /data/a/7/a7833039-4699-4c19-96a3-4e99cb97fa3f/premi.cz/web/wp-includes/class-wp-hook.php(288): execute_active_snippets('')
#3 /data/a/7/a7833039-4699-4c19-96a3-4e99cb97fa3f/premi.cz/web/wp-includes/class-wp-hook.php(312): WP_Hook->apply_filters(NULL, Array)
#4 /data/a/7/a7833039-4699-4c19-96a3-4e99cb97fa3f/premi.cz/web/wp-includes/plugin.php(478): WP_Hook->do_action(Array)
#5 /data/a/7/a7833039-4699-4c19-96a3-4e99cb97fa3f/premi.cz/web/wp-sett发布于 2021-01-07 13:58:36
我也面临着同样的问题。我知道现在回答这个问题已经太晚了,而且你也找到了一个解决方案。但我会回答,因为这对其他用户也有帮助。
我找到了好的和有效的解决方案。只需创建WooCommerce产品工厂对象并通过它获取产品即可。然后,你可以像这样改变产品的价格。
$productId = 80;
$_pf = new WC_Product_Factory();
$product = $_pf->get_product( $productId );
$product->set_price( 100);
$product->set_regular_price( 100 );
$product->set_sale_price( 100 );
$product->save();这对我很管用。我希望这对其他人也有帮助。如果你需要更多关于它的细节,那就关注this TryVary tutorial吧。
https://stackoverflow.com/questions/62387411
复制相似问题