2017-04-13 117 views
0

我建立了wordpress和woocommerce網站(www.jescesole.eu)。由於該網站在德國銷售,我不得不安裝額外的插件,woocommerce德國化(與polylang一起,查看德語和意大利語的內容) 在最近幾天我升級了wp和所有插件,但是當客戶提交順序,出現內部服務器錯誤消息。 我讀服務器錯誤日誌和報告一個長錯誤消息:woocommerce - 內部服務器錯誤

星期四,2017年4月13日21時53分37秒GMT [錯誤] [客戶端87.13.188.180] - www.jescesole.eu - AH01215: payment_method被錯誤地調用。訂單屬性不應直接訪問。 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_COD-> process_payment,WC_Order-> update_status,WC_Order- >保存,WC_Order-> status_transition,do_action( 'woocommerce_order_status_pending_to_processing'),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_GZD_Email_Customer_Paid_For_Order->觸發,WC_Email-> get_content,WC_GZD_Email_Customer_Paid_For_Order-> get_content_html,wc_get_template_html,wc_get_template,include('/ plugins/woocommerce-germanized/templates/emails/customer-paid-for-order.php'), do_action('woocommerce_email_order_details'),WP_Hook-> do_action,WP_Hook-> apply_filters,call_user_func_array,WC_Emails-> order_details,wc_get_template,include('/ plugins/woocommerce/templates/emails/email-order-details.php'),do_action( 'woocommerce_email_before_order_table'),WP_Hook-> do_action,WP_Hook-> apply_filters,call_user_func_array,Hyyan \ WPI \ Gateways \ GatewayBACS-> email_instructions,WC_Abstract_Legacy_Order - > __ get,wc_doing_it_wrong。此消息已在3.0版本中添加:/ php-wrapper/php-cgi,referer http://www.jescesole.eu/it/checkout/

發生了什麼?可能是一些插件不兼容或與主題? thanx

+0

試着回到這個錯誤之前的情況。然後再次逐個更新,每次更新WP或插件時,都要測試整個站點。通過這種方式,您可以快速找到哪個插件導致問題,或者安裝的插件與最新版本的Wordpress不兼容。 這可能是一項單調乏味的工作。但是找出造成問題的原因是解決問題的90%。在找出原因後,您可以找到解決方案。 – Kevinvhengst

+1

此錯誤是由** WooCommerce mega主版本3.0.x引起的。更新**你應該更好地回到2.6.x版本,因爲許多事情已經改變。這裏的問題在於支付網關(插件),它正在調用$ order對象屬性。現在這個屬性不能像以前那樣直接調用。相反,它必須使用新的setters和getters方法...... **所以問題當然是支付網關插件(與WC 3.0+不兼容)或支付網關周圍的一些自定義代碼** – LoicTheAztec

+1

「不應直接訪問訂單屬性。 「訂單,優惠券,產品和訂單項屬性現在必須通過getter函數訪問。所以'$ order-> payment_gateway'現在是'$ order-> get_payment_gateway()'。 – helgatheviking

回答

-1

WooCommerce 3.0更新了他們的代碼來限制財產的直接訪問,您可以更改您的代碼,如下所示。

$OrderID= (WC()->version < '2.7.0') ? $order->id : $order->get_id(); 
    $shipping_country = ( WC()->version < '2.7.0') ? $order->shipping_country : $order->get_shipping_country(); 

或者更新你的插件到WC3兼容。

$ order-> property:$ order->get_ property();

0

我有同樣的問題,並發現導致錯誤的「Hyyan WooCommerce Polylang整合」插件。將其禁用並且內部服務器錯誤消失。 Woocommerce德國化與Polylang完美結合。這個插頭不需要(再)。