Wordpress 基于WooCommerce产品库存自动更新产品自定义字段

Wordpress 基于WooCommerce产品库存自动更新产品自定义字段,wordpress,woocommerce,product,advanced-custom-fields,stock,Wordpress,Woocommerce,Product,Advanced Custom Fields,Stock,我有一个ACF字段“DeliverySpeed”附加到值为“快”和“慢”的产品上 每次产品库存为零或更少时,我想更新此字段,使其值变为“慢”(缺货产品) 到目前为止,我仍在学习PHP这是我学到的东西,但我确信我缺少了不同的东西,我只是不知道该往哪个方向走: 基于 功能自动\u更改\u交付(){ 全球$产品; $fieldkey=“交货速度”; $valueslow=“Slow”; 如果($product->get\u stock\u quantity()一旦订单降低了产品库存水平,以下代码将自

我有一个ACF字段“DeliverySpeed”附加到值为“快”和“慢”的产品上

每次产品库存为零或更少时,我想更新此字段,使其值变为“慢”(缺货产品)

到目前为止,我仍在学习PHP这是我学到的东西,但我确信我缺少了不同的东西,我只是不知道该往哪个方向走:

基于


功能自动\u更改\u交付(){
全球$产品;
$fieldkey=“交货速度”;
$valueslow=“Slow”;

如果($product->get\u stock\u quantity()一旦订单降低了产品库存水平,以下代码将自动更新产品自定义字段。因此,当产品有库存时,自定义字段值将为“快”,否则为“慢”

守则:

add_action('woocommerce_payment_complete'、'update_product_custom_field_reduced_stock_levels'后,'20,2');
添加操作('woocommerce\u order\u status\u completed'、'update\u product\u custom\u field\u reduced\u stock\u Level'之后,'20,2');
添加操作('woocommerce\u order\u status\u processing'、'update\u product\u custom\u field\u在降低库存水平后,'20,2');
添加操作('woocommerce\u order\u status\u on-hold'、'update\u product\u custom\u field\u在降低库存水平后,'20,2');
函数更新\产品\自定义\字段\($order\u id,$order=''){
//仅当订单降低了产品库存水平时才继续
if(wc_string_to_bool(get_post_meta($order_id,''u order_stock_reduced',true)))
返回$order_id;//退出
如果(!$order | |!是一个($order,'WC|u order')){
$order=wc\u get\u order($order\u id);//如果wc\u order对象为空,则获取它
}
$field_key='DeliverySpeed';
//循环浏览订单项
foreach($order->get_items()作为$item){
$product=$cart_项目['data'];
$product_id=$product->get_id();
$stock\u quantity=$product->get\u stock\u quantity();
$field_value=get_field($field_key,$product_id);//获取ACF字段值
如果($stock\u quantity 0&&$field\u value==='Slow'){
更新字段($field\u key,$Fast',$product\u id);
}
}
}

代码进入活动子主题(或活动主题)的functions.php文件。它应该可以工作。

谢谢你,Loic,代码很有意义,也很简单,但是它不起作用:/I我已经完成了下订单的所有步骤,将产品库存数量从5减少到-5,并在订单状态之间更新/更改,但ACF产品字段“deliveryspeed”从未从“快”更新到“慢”或vic反之亦然

function automatically_change_delivery( ) {

global $product;

$fieldkey = "DeliverySpeed";
$valueslow = "Slow";

if($product->get_stock_quantity()<0) { update_field( $field_key, $valueslow, $post_id );

 } }