php - Woocommerce:以编程方式更新订单状态

标签 php wordpress plugins woocommerce orders

当我尝试在 WP_Ajax Hook 期间以编程方式更新订单时。浏览器。

$order = wc_create_order($order_data);
$order->add_product( get_product( $membership_product_ids[0] ), 1 );
$order->set_address( $address, 'billing' );
$order->set_address( $address, 'shipping' );
$order_id = $order->id;
$order->update_status('completed');

我收到以下错误:

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: Invalid argument supplied for foreach() in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 302

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: Invalid argument supplied for foreach() in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 302

如果我删除 update_status 函数,它不会出错。

最佳答案

您看到的错误来自通知系统。您的代码似乎能够很好地更新状态。 Emogrify 类用于在 HTML 模板中生成内联 CSS。您可能会看到这些错误,因为 A) 您覆盖了“已完成订单”电子邮件模板并产生了解析错误,或者 B) 有一个 WooCommerce 插件在某种程度上与您正在做的事情有冲突。

要纠正此问题,第一步是通过进入 WooCommerce->设置->电子邮件-> 已完成订单下的管理员并取消选中“启用此电子邮件通知”框来验证它是通知系统.然后保存并重新测试。

如果您的错误消失了,请检查您的主题目录以查找该模板的覆盖。它将在 <themename>/woocommerce/emails/customer-completed-order.php 中.如果您有,他们会重命名它,使其不再覆盖并重新激活“已完成订单”通知,并查看使用默认模板是否可以解决问题。

如果默认电子邮件通知模板的问题仍然存在,请禁用您可能已安装的所有 WooCommerce 附加组件并重新测试。此时,如果它正常工作,您可以一个接一个地重新启用它们,直到问题再次出现。找到有问题的加载项后,您需要调整代码以使加载项不会引起问题,或者联系加载项开发人员解决您的问题。

关于php - Woocommerce:以编程方式更新订单状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847681/

相关文章:

php - 无法发送 session 缓存限制器 - header 已发送 - CodeIgniter (Session.php)

php - 如何使用 PHP 发送 POST 请求?

wordpress - 将 wordpress 安装从子域移动到根目录并保留链接

css - 中心 Wordpress 按钮

javascript - 如何将 Bootstrap 3 Datepicker 自定义为仅日期而不带时间戳

php - 编辑php文件仅显示错误

php - 使用 PHP 转换 WooCommerce Webhook 有效负载

java - 每次我使用终端命令构建项目时,cordova 项目 native 应用程序中的 config.xml 都会更新

Gradle插件开发(Java代码): Update extension properties for Internal applied Plugin

php - 与 Doctrine2 的多态关系