如何从 WooCommerce 订单中获取自定义字段值

How to get custom fields values from WooCommerce orders

我已经检查过类似的问题,但无法解决问题。

到目前为止,这是我的代码:

// Add VAT and SSN fields in billing address display
add_filter( 'woocommerce_order_formatted_billing_address', 'custom_add_vergi_dairesi_vergi_no_formatted_billing_address', 10, 2 );
function custom_add_vergi_dairesi_vergi_no_formatted_billing_address( $fields, $order ) {
    $fields['vergi_dairesi'] = $order->billing_vergi_dairesi;
    $fields['vergi_no'] = $order->billing_vergi_no;

    return $fields;
}

它给我这个错误:"billing_vergi_dairesi 调用不正确。不应直接访问订单属性"

所以我用 $order->get_billing_vergi_dairesi();$order->get_billing_vergi_no(); 替换了 $order->billing_vergi_dairesi;$order->billing_vergi_no; 然后我得到: “未捕获的错误:调用未定义的方法”。 =27=].

我做错了什么?

从 WooCommerce 3 开始,您需要使用 WC_Data 方法 get_meta() 和正确的元键从 WC_Order 对象中获取自定义字段值,例如:

// Add VAT and SSN fields in billing address display
add_filter( 'woocommerce_order_formatted_billing_address', 'custom_add_vergi_dairesi_vergi_no_formatted_billing_address', 10, 2 );
function custom_add_vergi_dairesi_vergi_no_formatted_billing_address( $fields, $order ) {
    $fields['vergi_dairesi'] = $order->get_meta('billing_vergi_dairesi');
    $fields['vergi_no']      = $order->get_meta('billing_vergi_no');

    return $fields;
}

或者可以以下划线开头,例如:

// Add VAT and SSN fields in billing address display
add_filter( 'woocommerce_order_formatted_billing_address', 'custom_add_vergi_dairesi_vergi_no_formatted_billing_address', 10, 2 );
function custom_add_vergi_dairesi_vergi_no_formatted_billing_address( $fields, $order ) {
    $fields['vergi_dairesi'] = $order->get_meta('_billing_vergi_dairesi');
    $fields['vergi_no']      = $order->get_meta('_billing_vergi_no');

    return $fields;
}

应该可以。

Check in wp_postmeta table that billing_vergi_dairesi and billing_vergi_no are the correct meta keys.

参见: