2016-04-25 32 views
1

フィルター "WooCommerce管理課金フィールド"のおかげで、notificiaciのフッターの電子メールで請求フィールドを注文しましたが、カスタム請求フィールドを挿入しようとすると表示されません。Woocommerceオーダーフォーマットの請求先住所再注文とカスタム請求フィールド

add_filter('woocommerce_order_formatted_billing_address' , 'woo_reorder_billing_fields', 10, 2); 

function woo_reorder_billing_fields($address, $wc_order) { 

    $address = array(
     'first_name' => $wc_order->billing_first_name, 
     'last_name'  => $wc_order->billing_last_name, 
     'company'  => $wc_order->billing_company, 
     'my_field'  => $wc_order->billing_my_field, 
     'country'  => $wc_order->billing_country 
     ); 

    return $address; 
} 

は、注文管理、編集、私は最初のフィールドを追加し、配列を並べ替え、フィルタ「woocommerce_admin_billing_fields」に私のカスタム課金フィールドのおかげを表示することができます。

私は以前に追加したことに注意してください。このフィールドは、チェックアウトの際に「woocommerce_checkout_fields」というフィルタで並べ替えられました。

「$ wc_order」オブジェクトがチェックアウトにフィールドを格納する場合、私のカスタムフィールドを表示しないのはなぜですか?

アイデア?

ありがとうございます!

+0

解決方法は、「クラスwc-国」で、請求先住所を書式設定することです。私はすぐに解決策を書いてください –

+1

このリンクをチェックしてくださいそれはあなたの質問ソリューションかもしれません:http://wordpress.stackexchange.com/questions/120347/woocommerce-add-custom-field-set-like-billing-fields –

+0

@RonnieEsponja:どのようにあなたは解決しましたか? – Sefran2

答えて

1

はい、ここでの説明:

我々は、欧州連合(EU)の企業のための財政文書を保存するために、この例では、フィールド「VAT」を新cusotmフィールドを登録します。カスタムフィールドを登録して管理者/ユーザパネルに表示する方法については、多くのドキュメントがあります。

add_filter('woocommerce_default_address_fields', 'woo_new_default_address_fields'); 

function woo_new_default_address_fields($fields) { 

    $fields['vat'] = array(

     'label' => __('VAT number', 'woocommerce'), 
     'class' => array('form-row-wide', 'update_totals_on_change'), 

    ); 

    $order = array(
     "first_name", 
     "last_name", 
     "vat", 
     "company", 
     "country", 
     "address_1", 
     "address_2", 
     "city", 
     "state", 
     "postcode" 
    ); 

    foreach($order as $field) { 

     $ordered_fields[$field] = $fields[$field]; 

    } 

    $fields = $ordered_fields; 

    return $fields; 

} 

のみメールに対する課金フィールドの登録に新しいフィールド「VAT」を追加し、我々はそれがアドレスfiledsセクションに表示したくありません。

add_filter('woocommerce_order_formatted_billing_address' , 'woo_custom_order_formatted_billing_address', 10, 2); 

function woo_custom_order_formatted_billing_address($address, $WC_Order) { 

    $address = array(
     'first_name' => $WC_Order->billing_first_name, 
     'last_name'  => $WC_Order->billing_last_name, 
     'vat'   => $WC_Order->billing_vat, 
     'company'  => $WC_Order->billing_company, 
     'address_1'  => $WC_Order->billing_address_1, 
     'address_2'  => $WC_Order->billing_address_2, 
     'city'   => $WC_Order->billing_city, 
     'state'   => $WC_Order->billing_state, 
     'postcode'  => $WC_Order->billing_postcode, 
     'country'  => $WC_Order->billing_country 
     ); 

    return $address; 

} 

次のコードは住所の外観をカスタマイズしています。ここでは、新しいVATフィールドへの呼び出しを追加する必要があります。これにより、各国の住所表示を個別にカスタマイズすることができます。

add_filter('woocommerce_formatted_address_replacements', function($replacements, $args){ 

    $replacements['{vat}'] = $args['vat']; 
    return $replacements; 

}, 10, 2); 

add_filter('woocommerce_localisation_address_formats' , 'woo_includes_address_formats', 10, 1); 

function woo_includes_address_formats($address_formats) { 

    $address_formats['ES'] = "{name}\n{company}\n{vat}\n{address_1}\n{address_2}\n{postcode} {city}\n{state}\n{country}"; 
    $address_formats['default'] = "{name}\n{company}\n{vat}\n{nif}\n{address_1}\n{address_2}\n{city}\n{state}\n{postcode}\n{country}"; 

    return $address_formats; 

} 

質問がありますか?

関連する問題