在自定义php文件中使用Woocommerce功能

问题描述 投票:2回答:1

我是PHP编程的初学者。我想创建一个PHP文件,其中order_status从预定义的顺序(在我的情况下为108)变为已完成。

因此我需要woocommerce函数get_order($ID)update_status但我不知道如何在我的PHP中使用它们。我希望你理解我的问题。从Java我可以想象我需要从一个类或类似的东西中获取一个实例?

这是我到目前为止的代码:

<?php $ord = new WC_Order(108); $ord->update_status('completed'); ?>

当我打开页面时收到以下错误:

Fatal error: Uncaught Error: Class 'WC_Order' not found (...)
php wordpress woocommerce orders
1个回答
2
投票

一般来说,在Wordpress / WooCommerce上,您将包含您的功能代码:

  • 在您的活动子主题(或活动主题)function.php文件中
  • 在插件中......

您还可以在以下位置启用一些代码:

现在要执行该功能,您将需要一个将执行您的功能的事件。

在(Wordpress)Woocommerce中,有很多action hooks会在某些特定事件上触发,您可以使用这些事件来执行您的功能。在这种情况下,您的函数将被挂钩(准备在特定事件上执行)。

如果要更改特定订单的状态,最好在后端的相关订单编辑页面中执行此操作。

一个例子: 例如,当客户在order-received终点(thankyou页面)结账后提交订单时,您可以更改订单状态:

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order');
function custom_woocommerce_auto_complete_order( $order_id ) {
    if ( ! $order_id ) return;

    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );
    // Change order status to "completed"
    $order->update_status( 'completed' );
}

此代码是官方代码段:Automatically Complete Orders

这是一个很好的例子,告诉你事情是如何工作的...所以在你的情况下,你在这里使用WC_Order class方法,如update_status()

现在使用此代码库,您可以像在此答案中一样优化行为: WooCommerce: Auto complete paid Orders (depending on Payment methods)


与订单相关:How to get WooCommerce order details

© www.soinside.com 2019 - 2024. All rights reserved.