2017-04-11 8 views
0

Ich versuche, einen MwSt-Bereich an der Kunden Rechnungsadresse hinzufügen, während diese auf der Checkout-Seite mit dem folgenden Code funktioniert:WooCommerce Kundenrechnungsadresse

// Company Name Required 
add_filter('woocommerce_checkout_fields','custom_override_checkout_fields'); 
function custom_override_checkout_fields($fields){ 
    $fields['billing']['billing_company']['required'] = true; 
    $fields['billing']['billing_vat'] = array(
    'label'  => __('VAT Number','woocommerce'), 
    'placeholder' => _x('Enter VAT Number','placeholder','woocommerce'), 
    'required' => true, 
    'class'  => array('form-row-wide'), 
    'clear'  => true 
    ); 
    return $fields; 
} 
//Display field value on the order edit page 
add_action('woocommerce_admin_order_data_after_shipping_address','my_custom_checkout_field_display_admin_order_meta',10,1); 
function my_custom_checkout_field_display_admin_order_meta($order){ 
    echo '<p><strong>'.__('VAT Number').':</strong> ' . get_post_meta($order->id,'_billing_vat',true) . '</p>'; 
} 
//Order the fields 
add_filter("woocommerce_checkout_fields","order_fields"); 
function order_fields($fields){ 
    $order = array(
     "billing_first_name", 
     "billing_last_name", 
     "billing_company", 
     "billing_vat", 
     "billing_country", 
     "billing_city", 
     "billing_postcode", 
     "billing_state", 
     "billing_address_1", 
     "billing_address_2", 
     "billing_email", 
     "billing_phone", 
    ); 
foreach($order as $field){$ordered_fields[$field] = $fields["billing"][$field];} 
$fields["billing"] = $ordered_fields; 
return $fields; 
} 

Ich brauche es auch auf den Kunden festgelegt werden Rechnungsadresse in den Kontooptionen. Wie ich es benötige, um dies mit der Registrierungsseite zu verknüpfen, wie ich möchte, dass sich die Benutzer mit allen ihren Anmeldeinformationen registrieren, einschließlich der Umsatzsteuernummer, die sie für einen B2B Webstore besitzen.

Wer weiß oder könnte mir jemand in die richtige Richtung zeigen, wie ich diese Aufgabe ausführen würde, nicht nur die Rechnungsfelder der Umsatzsteuer-Identifikationsnummer auf der Checkout-Seite, sondern auch auf der Profilseite des Benutzers, sowie wie füge alle diese Felder auf der Registrierungsseite hinzu?

Vielen Dank im Voraus für jede Hilfe für diesen Fall!

Antwort

1

Nun, es ist ganz einfach. Ihr Code sollte wie folgt aussehen:

Sie können mehr benutzerdefinierte Felder nach Ihren Bedürfnissen hinzufügen.

Und ja können Sie benutzerdefinierte Felder unter my-account/edit-address/billing/ unter Verwendung woocommerce_billing_fields Filterhaken hinzufügen.

für die Unterstützung
/* Add field under my account billing */ 
add_filter('woocommerce_billing_fields', 'my_woocommerce_billing_fields'); 
function my_woocommerce_billing_fields($fields) { 

    $user_id = get_current_user_id(); 
    $user = get_userdata($user_id); 

    if (!$user) return; 

    $fields['billing_vat'] = array(
     'type'  => 'text', 
     'label'  => __('VAT', 'woocommerce'), 
     'placeholder' => _x('VAT Number', 'placeholder', 'woocommerce'), 
     'required' => true, 
     'class'  => array('form-row'), 
     'clear'  => true, 
     'default' => get_user_meta($user_id, 'billing_vat', true) // assing default value if any 
    ); 

    return $fields; 
} 

/* Format custom field to show on my account billing */ 
add_filter('woocommerce_my_account_my_address_formatted_address', 'custom_my_account_my_address_formatted_address', 10, 3); 
function custom_my_account_my_address_formatted_address($fields, $customer_id, $name) { 

    $fields['vat'] = get_user_meta($customer_id, $name . '_vat', true); 

    return $fields; 
} 

/* Replace the key for custom field to show on my account billing */ 
add_filter('woocommerce_formatted_address_replacements', 'custom_formatted_address_replacements', 10, 2); 
function custom_formatted_address_replacements($address, $args) { 
    $address['{vat}'] = ''; 

    if (! empty($args['vat'])) { 
     $address['{vat}'] = __('VAT Number', 'woocommerce') . ': ' . $args['vat']; 
    } 

    return $address; 
} 
add_filter('woocommerce_localisation_address_formats', 'custom_localisation_address_format'); 
function custom_localisation_address_format($formats) { 

    foreach($formats as $key => $value) : 
     $formats[$key] .= "\n\n{vat}"; 
    endforeach; 

    return $formats; 
} 
+0

Ehrfürchtig Dank:

So ist der Code für diese, sollte wie unten sein! I Das zusätzliche Feld für die Registrierung scheint zu funktionieren und ich verstehe jetzt auch, wie ich mehr zur Registrierungsseite hinzufügen kann. Allerdings stelle ich fest, dass das MwSt.-Feld unter den Kontodetails erscheint, aber ich möchte es unter der Rechnungsadresse haben (my-account/edit-address/billing /). Ich könnte dies ändern, indem Sie den Haken anders oder so ansprechen? Wie "woocommerce_after_edit_account_address_form" frage ich mich, ob es eine Möglichkeit gibt, die Elemente zu bestellen. Wie auch immer, ich danke Ihnen für die Mühe, die Sie mir bereits gegeben haben! –

+0

Gern geschehen! Ich habe meine Antwort bearbeitet, um benutzerdefinierte Felder unter Rechnungsadresse (my-account/edit-address/billing /) hinzuzufügen. Lass es mich wissen, wenn es für dich funktioniert. :-) –

+0

Als akzeptierte Antwort markiert und danke einer Million Mann! Großartige Unterstützung! Mach weiter so, ich würde sagen, es ist toll zu sehen, dass es auf dieser Welt immer noch tolle Leute gibt! –