在帐单地址后在WooCommerce管理订单中显示自定义元数据
在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>';
}
}
现在它应该可以工作了。
相关文章