在帐单地址后在WooCommerce管理订单中显示自定义元数据帐单、自定义、订单、地址

2023-09-04 01:55:55 作者:所谓坚强╮都是伪装

在Add a select field with time intervals based on opening, closing and breaks times in WooCommerce checkout上阅读了7uc1f3r的答案后,我尽了最大努力了解如何将实际时间添加到订单中。

在最初的问题中已经提到了这一点,但当7uc1f3r修改该代码以匹配答案代码时,我在订单页面(管理员)上收到了通知。

它显示:

Notice: id was called incorrectly. Order properties should not be accessed directly. Backtrace: require('wp-admin/edit-form-advanced.php'), do_meta_boxes, WC_Meta_Box_Order_Data::output, do_action('woocommerce_admin_order_data_after_billing_address'), WP_Hook->do_action, WP_Hook->apply_filters, wps_select_checkout_field_display_admin_order_meta, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong Please see Debugging in WordPress for more information. (This message was added in version 3.0.) in /wp-includes/functions.php on line 5311

显示实际交付时间,但上面有此通知。

这就是说;我尽了最大努力进一步修改代码,以检查";如果";交货时间不为空,如果不为空,则显示它。这也没有帮助--通知还在那里。

我将代码更改为:

add_action('woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta( $order ) {
    
    if ( get_post_meta( $order->get_id(), 'delivery_time' != '' ) ) {
    
        echo '<p><strong>'.__('Requested Delivery Time').':</strong> ' . get_post_meta($order->id, 'delivery_time', true) . '</p>';
    }
}

不确定如何删除通知。

推荐答案

问题来自$order->id,请尝试执行以下操作:

add_action('woocommerce_admin_order_data_after_billing_address', 'wps_select_checkout_field_display_admin_order_meta', 10, 1 );
function wps_select_checkout_field_display_admin_order_meta( $order ) {
    $delivery_time = $order->get_meta('delivery_time');
    
    if ( ! empty($delivery_time) ) {
        echo '<p><strong>'.__('Requested Delivery Time').':</strong> ' . $delivery_time . '</p>';
    }
}

现在它应该可以工作了。