【发布时间】:2019-10-25 19:01:50
【问题描述】:
我正在尝试显示我在 functions.php 中为 WooCommerce 创建的自定义结帐字段,但出现此错误(以及实际的自定义字段文本,如下所示:
Notice: id was called incorrectly. Order properties should not be accessed directly. Backtrace: include('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, cdm_custom_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 /www/webroot/cafed/wordpress/wp-includes/functions.php on line 4778
这是产生此错误的代码。
add_action( 'woocommerce_admin_order_data_after_billing_address', 'so_custom_checkout_field_display_admin_order_meta', 10, 1 );
function so_custom_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('Gift Message').':</strong> ' . get_post_meta( $order->id, 'Gift Message', true ) . '</p>';
}
add_filter('woocommerce_email_order_meta_keys', 'my_custom_order_meta_keys');
function my_custom_order_meta_keys( $keys ) {
$keys[] = 'Gift Message';
return $keys;
}
我相信这与 Woo 代码的更新有关,但我不确定如何更改它。
【问题讨论】:
-
我想你应该使用 $order_id 而不是 $order
-
我将该行更改为 echo '
'.__('Gift Message').': ' 。 get_post_meta($order_id, '礼物消息', true ) 。 '
';但现在出现另一个错误,而不是说“未定义的变量:第 499 行 /www/webroot/cafed/wordpress/wp-content/themes/beignets/functions.php 中的 order_id” -
你试过这样吗? function so_custom_checkout_field_display_admin_order_meta($order_id){ echo '
'.__('Gift Message').': ' . get_post_meta($order_id, '礼物消息', true ) 。 '
'; } -
这样更好。没有错误,但没有显示生成的礼物消息文本。
-
您能否通过记录或打印到控制台来查看 $order_id 是否具有值。
标签: woocommerce