Benutzerdefinierte Woocommerce-Checkout-Formular

Ich möchte mein Checkout-Formular anpassen. Ich frage mich, ob es möglich ist, ein benutzerdefiniertes Formular zu erstellen, indem ich meine eigenen Eingaben erstelle, während ich die gleichen Feldnamen und Aktionen verwende wie das Originalformular?

Solutions Collecting From Web of "Benutzerdefinierte Woocommerce-Checkout-Formular"

Sie können Woocommerce-Vorlagen überschreiben, indem Sie sie in Ihr Design einfügen . Um form-billing.php Vorlage form-billing.php zu überschreiben, legen Sie diese in das yourtheme/woocommerce/checkout/form-billing.php .

Sie können auch einen Filter hinzufügen, um die Formularfeld- Renderfunktion zu überschreiben. Oder überschreiben Sie sogar die ganze function.

Informationen zum Hinzufügen neuer Felder finden Sie in der WooCommerce-Dokumentation .

Ich füge Code aus der Dokumentation ein, um Felder hinzuzufügen, um die Antwort nicht nur mit Link zu verlassen:

 /** * Add the field to the checkout */ add_action( 'woocommerce_after_order_notes', 'wpse_287663_custom_checkout_field' ); function wpse_287663_custom_checkout_field( $checkout ) { echo '

' . __('My Field') . '

'; woocommerce_form_field( 'field_name', array( 'type' => 'text', 'class' => array('my-field-class form-row-wide'), 'label' => __('Fill in this field'), 'placeholder' => __('Enter something'), ), $checkout->get_value( 'field_name' )); echo '
'; } /** * Process the checkout */ add_action('woocommerce_checkout_process', 'wpse_287663_custom_checkout_field_process'); function wpse_287663_custom_checkout_field_process() { // Check if set, if its not set add an error. if ( ! $_POST['field_name'] ) 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', 'wpse_287663_custom_checkout_field_update_order_meta' ); function wpse_287663_custom_checkout_field_update_order_meta( $order_id ) { if ( ! empty( $_POST['field_name'] ) ) { update_post_meta( $order_id, 'My Field', sanitize_text_field( $_POST['field_name'] ) ); } } /** * Display field value on the order edit page */ add_action( 'woocommerce_admin_order_data_after_billing_address', 'wpse_287663_custom_checkout_field_display_admin_order_meta', 10, 1 ); function wpse_287663_custom_checkout_field_display_admin_order_meta($order){ echo '

'.__('My Field').': ' . get_post_meta( $order->id, 'My Field', true ) . '

'; }