2016-08-19 3 views
2

Ich bin gerade dabei, eine Website zu bauen. Mein Klient fragt sich, ob es möglich ist, bestimmte Körbe zu haben, die an Tierrettungszentren, Pflegeheimen oder ähnliches geschickt werden können. Diese Orte würden von ihm ausgewählt und würden idealerweise in der Checkout-Seite in einem Dropdown-Fenster angezeigt werden, der Benutzer kann dann wählen, an einen von diesen zu senden oder selbst eine Adresse auszufüllen.WooCommerce Versand an Dropdown-Liste der Adresse auf der Kasse

Ich habe die für Woocommerce verfügbaren Erweiterungen durchgesehen und konnte wirklich nichts sehen, was die Rechnung erfüllte.

Hat jemand versucht, etwas ähnliches zu erreichen?

Jemand könnte mir bitte in die richtige Richtung zeigen?

Dank

Antwort

2

Sie können ganz einfach benutzerdefinierte Felder in der Kasse Form hinzufügen. Zum Beispiel können Sie woocommerce_after_order_notes Haken verwenden ein benutzerdefiniertes Feld nach den Kundendaten und Auftrag Notizen hinzuzufügen:

Hier ist der Code:

// Creating the custom fields on checkout page after order notes 
add_filter('woocommerce_after_order_notes', 'custom_checkout_fields'); 
function custom_checkout_fields($checkout) { 

    echo '<div id="my_custom_checkout_field"><br><h2>' . __('My custom fields title', 'my_theme_slug') . '</h2>'; 

    // The selector 
    woocommerce_form_field('my_field_name1', array(
     'type'  => 'select', 
     'required' => true, 
     'class'  => array('my-field-class form-row-wide'), 
     'label'  => __('Select your destination', 'my_theme_slug'), 
     'options'  => array(
      '' => __('Chose an option', 'my_theme_slug'), 
      'option1' => 'Fill in the custom address (display a field)', 
      'option2' => 'my option 1 choice', 
      'option3' => 'my option 2 choice', 
      'option4' => 'my option 3 choice' 
     ) 
    ), $checkout->get_value('my_field_name1')); 

    // The field (Using javascript to make it appear when selector corresponding value is chosen) 
    woocommerce_form_field('my_field_name2', array(
     'type'  => 'textarea', 
     'required' => false, 
     'class'  => array('my-field-class2 form-row-wide'), 
     'label'  => __('Fill in the custom address', 'my_theme_slug'), 
     'placeholder' => __('Enter an address (optional)', 'my_theme_slug') 
    ), $checkout->get_value('my_field_name2')); 

echo '</div>'; 

} 

// Process the checkout 
add_action('woocommerce_checkout_process', 'custom_checkout_field_process'); 
function custom_checkout_field_process() { 
    // Check if set, if its not set add an error. 
    if (! $_POST['my_field_name1']) // the selector 
     wc_add_notice(__('Please enter something into this new shiny field.'), 'error'); 
} 

// Update the order meta with field value 
add_action('woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta'); 
function custom_checkout_field_update_order_meta($order_id) { 
    if (! empty($_POST['my_field_name1'])) { 
     update_post_meta($order_id, 'my_field_name1', sanitize_text_field($_POST['my_field_name1'])); 
    } 
    if (! empty($_POST['my_field_name2'])) { 
     update_post_meta($order_id, 'my_field_name2', sanitize_text_field($_POST['my_field_name2'])); 
    } 
} 

Natürlich geht so auf function.php Datei Ihres aktiven Kind Thema (oder Thema) oder in einer beliebigen Plugin-Datei.

Dies ist ein voll funktionsfähiges Arbeitsteil Beispiel

WAS Linke ist (was Sie brauchen und was Sie haben)

Sie benötigen
ZU Machen Sie ein benutzerdefiniertes jQuery/JavaScript-Skript:
- Zuerst zu hide das Textfeld Feld (wenn Seite geladen ist).
- Um zeigen Sie das Textfeld Feld, wenn der richtige Wert im Selektor (manuelle Eingabe der Adresse Fall) gewählt wird.

Andere Optionen:
- Anzeige/bearbeiten, die bearbeiten im Admin-Befehle Seiten Werte
- diese benutzerdefinierten Felder zu E-Mails hinzufügen ...


Offizielle Referenz: WooThemes - Customizing checkout fields using actions and filters

Nachbestellung ref: Reordering checkout fields in WooCommerce 3

Verwandte Themen