【问题标题】:Woo commerce checkout page: status was called incorrectly. Order properties should not be accessed directlyWoo Commerce 结帐页面:状态调用不正确。订单属性不应直接访问
【发布时间】:2017-08-03 13:18:46
【问题描述】:

我正在运行 WordPress 4.8、Woocommerce 3.1.1、WooCommerce 订阅 2.2.10。当我在结帐页面上选择付款方式 BACS 时,我收到以下错误:

PHP 消息:状态调用不正确。不应直接访问订单属性。回溯:

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_stat ->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_ -> 触发器,WC_Email->get_content,WC_Email_New_Order->get_content_html,wc_get_template_html,wc_get_template,include('/plugins/woocommerce/templates/emails/admin" ```

同时从上游读取响应头。

有谁知道导致错误的原因以及如何解决?我正在运行二十七个默认主题。

【问题讨论】:

    标签: php woocommerce checkout


    【解决方案1】:

    在结帐功能的某处可以直接访问$order 的属性状态,这意味着代码中有类似$order->status 的内容。

    这在 woocommerce 3.0 版中已更改且不再允许。

    尝试将其更改为:

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

    check this related issue

    您必须弄清楚如何为订单状态调用数据库的 post_meta 表中的 meta_key,并将其替换为 get_post_meta 函数中的第二个参数(我假设它被称为 _status)。

    我在另一个插件和另一个属性$order->payment_method 上遇到了同样的问题,当我将其更改为

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

    它起作用了,没有更多的通知消息出现。

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 1970-01-01
      • 2020-10-19
      • 2021-02-06
      • 2014-08-09
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多