Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当订单中有缺货项时,更改订单状态_Php_Wordpress_Woocommerce_Status_Orders - Fatal编程技术网

Php 当订单中有缺货项时,更改订单状态

Php 当订单中有缺货项时,更改订单状态,php,wordpress,woocommerce,status,orders,Php,Wordpress,Woocommerce,Status,Orders,在WooCommerce中,如果此订单中有延期订购的项目,如何将保留订单状态更改为其他状态 我曾尝试使用一个自定义函数挂接在woocommerce\u order\u status\u on-hold操作钩子中,但没有成功 有人能帮我解决这个问题吗 谢谢 function mysite_hold($order_id) { $order = new WC_Order($order_id); $items = $order->get_items(); $backord

在WooCommerce中,如果此订单中有延期订购的项目,如何将保留订单状态更改为其他状态

我曾尝试使用一个自定义函数挂接在woocommerce\u order\u status\u on-hold操作钩子中,但没有成功

有人能帮我解决这个问题吗

谢谢

function mysite_hold($order_id) {

    $order = new WC_Order($order_id);
    $items = $order->get_items();
    $backorder = FALSE;

    foreach ($items as $item) {
        if ($item['Backordered']) {
            $backorder = TRUE;
            break;
        }
    }
    if($backorder){
        $order->update_status('completed'); //change your status here
    }
}
add_action('woocommerce_order_status_on-hold', 'mysite_hold');

//You may need to store your backorder info like below

wc_add_order_item_meta($item_id, 'Backordered', $qty - max(0, $product->get_total_stock()));
请尝试这个片段


请尝试此代码段

这里有一个在woocommerce\u Thankyu操作挂钩中挂钩的自定义函数,如果此订单的状态为“搁置”,并且其中有任何缺货产品,则该函数将更改订单状态

您必须在函数中设置所需的新状态缓动变化

下面是自定义函数代码的注释:

代码位于活动子主题或主题的function.php文件中,或者位于任何插件文件中


代码经过测试并正常工作。

这里有一个自定义函数,挂接在woocommerce\u Thankyu action hook中,如果此订单的状态为保留状态,并且其中有任何缺货产品,则该函数将更改订单状态

您必须在函数中设置所需的新状态缓动变化

下面是自定义函数代码的注释:

代码位于活动子主题或主题的function.php文件中,或者位于任何插件文件中


代码已测试并正常工作。

在//获取与订单项相关的产品对象实例时编辑代码错误

$product = version_compare( WC_VERSION, '3.0', '<' ) ? wc_get_product($item['product_id']) : $item->get_product();

//获取与订单项相关的产品对象实例时发生编辑代码错误

$product = version_compare( WC_VERSION, '3.0', '<' ) ? wc_get_product($item['product_id']) : $item->get_product();

感谢您工作正常,但此行显示错误:wc\u add\u order\u item\u meta$item\u id,$quaty-max0,$product->get\u total\u stock;如何在woocommerce中获取订单详细信息?如果订单包含销售价格,则我希望更改订单状态感谢工作正常,但此行显示错误:wc\u add\u order\u item\u meta$item\u id,'Backordered',$qty-max0,$product->get\u total\u stock;如何在woocommerce中获取订单详细信息?如果订单包含销售价格,则我想更改订单状态,$cart\u项目变量来自何处?@RizwanKhan抱歉,更新时出现键入错误…我已更新了代码。$cart\u项目变量来自何处?@RizwanKhan抱歉,更新时出现键入错误…我已更新了代码。是否需要添加任何解释,这个答案与这个问题有什么关系?你想补充一下解释吗?这个答案与这个问题有什么关系?