【问题标题】:Use Woocommerce functions in custom php files在自定义 php 文件中使用 Woocommerce 函数
【发布时间】:2017-12-26 02:12:33
【问题描述】:

我是 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 (...)

【问题讨论】:

  • 请发布您目前拥有的代码。
  • 嗨,Leopold,这是我目前所拥有的:update_status('完成'); ?> 当我打开页面时,我收到以下错误:致命错误:未捕获错误:找不到类 'WC_Order' (...)
  • 您将此代码放在哪个文件中?我试图弄清楚包含了哪些代码库。
  • 您好!我将代码放在一个名为 completor.php 的 .php 文件中,它位于 /wp-content/plugins/woocommerce/includes/completor.php

标签: php wordpress woocommerce orders


【解决方案1】:

一般而言,在 Wordpress/WooCommerce 上,您将包含您的函数代码:

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

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

现在要执行该函数,您需要一个事件来执行您的函数。

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

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

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

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' );
}

此代码为官方代码sn-p:Automatically Complete Orders

这是一个很好的例子,它向你展示了事情是如何运作的……所以在你的例子中,你在这里使用WC_Order class 方法,比如update_status()

现在有了这个代码库,你可以像这个答案一样改进行为:
WooCommerce: Auto complete paid Orders (depending on Payment methods)


订单相关:How to get WooCommerce order details

【讨论】:

  • 感谢您的回答!现在我明白了很多。我有以下问题:我编写了一个程序来满足我从 woocommerce 的订单。它直接通过 sql 将 order_status 更改为已完成。问题是使用这种方式不会触发电子邮件触发器。所以我决定在我的数据库中的一个新表中写入所有已完成的订单,并添加一个每 10 分钟打开一个 php 页面的 cronjob。在这个 php 中,我想从表中获取所有 id,并将它们的 order_status 设置为已完成。我的事件只会是打开页面。如何将其添加为钩子?菲利普
  • @PhilippRitter 给你发一封邮件,与此相关……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 2021-06-15
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2013-02-24
相关资源
最近更新 更多