gpt4 book ai didi

php - 在 Woocommerce 中以编程方式设置或更新产品运输类别

转载 作者:行者123 更新时间:2023-12-02 03:22:24 25 4
gpt4 key购买 nike

美好的一天,我一直在试图弄清楚如何使用 php 以编程方式选择运输类别。我正在使用表单从前端创建 woocommerce 产品,并在表单提交时创建产品,但我可以选择任何运输类别。下面的屏幕截图显示了从前端创建的产品的运输类别设置,其中检查元素选项卡显示了运输类别的 ID(作为值)

woocommerce shipping classes

我使用以下代码选择手机运费类别

$pShipping_Class = 25; //Where 25 is the id/value for Phone Shipping Fee Class
update_post_meta( $product_id, 'product_shipping_class', $pShipping_Class );

update_post_meta 适用于所有其他字段,甚至是我创建的自定义下拉字段,我可以使用 update_post_meta( $product_id, '_list_of_stores', 'custom-order' ); 来选择值 custom - 从我创建的自定义下拉字段中订购,但是当我为运输类别尝试相同的操作时,它不起作用。不确定我做错了什么。

请为我指出正确的方向。我如何使用 php.ini 更新运输类别?我已经有了 ID 和 slug。

谢谢

更新:当我手动选择手机运费并点击更新产品按钮时,我意识到这一点。它添加了 selected 属性(即 selected="selected"),请参见下面的屏幕截图;

woocommerce shipping class selected

请告诉我如何进行此更新/选择任何运输类别(通过 ID 或 slug),因为运输类别需要动态更新,以便为用户提供他们创建并添加到的产品的运输费率购物车。

最佳答案

Shipping classes are not managed by post meta data for the products. They are managed by a custom taxonomy, so you can't use update_post_meta() function.

在 Woocommerce 中,运输类别由自定义分类product_shipping_class 管理,您需要使用 wp_set_post_terms()函数使其以编程方式工作,如下所示:

$shipping_class_id = 25; // the targeted shipping class ID to be set for the product

// Set the shipping class for the product
wp_set_post_terms( $product_id, array($shipping_class_id), 'product_shipping_class' );

或者从 Woocommerce 3 开始,您可以使用 WC_Product CRUD method set_shipping_class_id()这样:

$shipping_class_id = 25; // the targeted shipping class ID to be set for the product

$product = wc_get_product( $product_id ); // Get an instance of the WC_Product Object

$product->set_shipping_class_id( $shipping_class_id ); // Set the shipping class ID

$product->save(); // Save the product data to database

关于php - 在 Woocommerce 中以编程方式设置或更新产品运输类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com