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