在 Woocommerce 中以编程方式设置或更新产品运输 class
Set or update product shipping class programmatically in Woocommerce
美好的一天,
我一直在尝试弄清楚如何使用 php 以编程方式 select 发送 class。我正在使用表单从前端创建一个 woocommerce 产品,并在表单提交时创建了产品,但我可以让任何运输 class 成为 selected。下面的屏幕截图显示了从前端创建的产品的运输 class 设置,其中检查元素选项卡显示了运输 classes
的 ID(作为值)
我正在使用以下代码 select phone 运费 Class
$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' );
到 select 自定义下拉列表中的值 custom-order我创建的字段,但是当我对运输 class 尝试同样的事情时,它不起作用。不确定我做错了什么。
请指出正确的方向。我如何使用 php 更新运费 class。我已经有了 ID 和 slug。
谢谢
更新:我意识到当我手动 select Phone 运费并点击更新产品按钮时。它添加了 selected 属性 (即 selected="selected" ),见下面的截图;
请问我如何制作这个 update/select 任何运费 class(通过 ID 或 slug),因为运费 class 需要即时更新以提供用户他们创建并添加到购物车的产品的运费。
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 以编程方式 select 发送 class。我正在使用表单从前端创建一个 woocommerce 产品,并在表单提交时创建了产品,但我可以让任何运输 class 成为 selected。下面的屏幕截图显示了从前端创建的产品的运输 class 设置,其中检查元素选项卡显示了运输 classes
的 ID(作为值)我正在使用以下代码 select phone 运费 Class
$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' );
到 select 自定义下拉列表中的值 custom-order我创建的字段,但是当我对运输 class 尝试同样的事情时,它不起作用。不确定我做错了什么。
请指出正确的方向。我如何使用 php 更新运费 class。我已经有了 ID 和 slug。
谢谢
更新:我意识到当我手动 select Phone 运费并点击更新产品按钮时。它添加了 selected 属性 (即 selected="selected" ),见下面的截图;
请问我如何制作这个 update/select 任何运费 class(通过 ID 或 slug),因为运费 class 需要即时更新以提供用户他们创建并添加到购物车的产品的运费。
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