2017-08-03 64 views
0

即时通讯运行WordPress的4.8,Woocommerce 3.1.1,WooCommerce订阅2.2.10。当我在结帐页面选择付款方式BACS时,出现以下错误:Woo商务结帐页面:状态被错误地调用。订单属性不应该直接访问

PHP消息:状态被错误地调用。订单属性不应直接访问。 Backtrace:

require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), do_action('template_redirect'), WP_Hook->do_action, WP_Hook->apply_filters, call_user_func_array, WC_AJAX::do_wc_ajax, do_action('wc_ajax_checkout'), WP_Hook->do_action, WP_Hook->apply_filters, call_user_func_array, WC_AJAX::checkout, WC_Checkout->process_checkout, WC_Checkout->process_order_payment, WC_Gateway_BACS->process_payment, WC_Order->update_status, WC_Order->save, WC_Order->status_transition, do_action('woocommerce_order_status_pending_to_on-hold'), WP_Hook->do_action, WP_Hook->apply_filters, call_user_func_array, WC_Emails::send_transactional_email, do_action_ref_array, WP_Hook->do_action, WP_Hook->apply_filters, call_user_func_array, WC_Email_New_Order->trigger, WC_Email->get_content, WC_Email_New_Order->get_content_html, wc_get_template_html, wc_get_template, include('/plugins/woocommerce/templates/emails/admin" ```

while reading read header from upstream。

有谁知道是什么导致了错误,我该如何解决它?我正在运行Twenty 17默认主题。

回答

2

在结帐功能的某个地方可以直接访问$order的房产状态,这意味着在代码中有这样的$order->status

这是已更改,不允许在3.0版的woocommerce中使用。 check this related issue

尝试将其更改为类似:

$orderStatus = get_post_meta($order_id, '_status', true); 

你要搞清楚你的​​数据库的post_meta表meta_key怎么叫的订单状态,并更换其作为第二个参数get_post_meta函数(我认为它被称为_status)。

我有同样的问题的另一个插件,为其他财产,$order->payment_method,当我把它改成

$payment_method = get_post_meta($order_id, '_payment_method', true); 

它的工作并没有更多的消息通知出现。