Er zijn twee manieren om in de WooCommerce checkout een veld toe te voegen. De makkelijke optie is de no-code oplossing van een plugin. En verder in dit artikel vind je de uitleg hoe je dit kunt doen zonder een plugin.
No-code oplossingen
Je kunt eenvoudig aangepaste afrekenvelden toevoegen met gratis plugins zoals:
Code oplossingen
Om afrekenvelden aan te passen zonder WordPress plugin, gebruik je de filterhook woocommerce_checkout_fields. Deze hook is gedefinieerd in woocommerce/includes/class-wc-checkout.php:300 en bevat slechts één parameter.
Elk veld moet een array zijn en bevat enkele sleutels zoals:
- label: Tekst die als label van het veld wordt weergegeven
- id: Unieke id
- priority: Nummer voor de volgorde van weergave
- type: Type invoerveld (tekst, nummer, select, checkbox)
- class: Klassen voor styling (bijv. form-row-wide, form-row-first)
- required: Boolean waarde, veld vereist of niet
- description: Informatie na het invoerveld
- custom_attributes: Extra HTML-attributen als key-value paren
Tekstveld in de WooCommerce checkout
add_filter( 'woocommerce_checkout_fields', 'change_checkout_fields' ); function change_checkout_fields( $fields ) { $fields['billing']['custom_field_license'] = array( 'label' => __( 'License Code', 'custom-text-domain' ), 'class' => array( 'form-row-wide' ), 'required' => true, 'placeholder' => __( 'Please insert license code', 'custom-text-domain' ), 'id' => 'custom_field_license', 'priority' => 40, ); return $fields; }
Nummer veld in de WooCommerce checkout
$fields['billing']['custom_randon_value'] = array( 'type' => 'number', 'label' => __( 'Random Number', 'custom-text-domain' ), 'required' => true, 'class' => array( 'form-row-wide' ), 'description' => __( 'Please insert random number (1-25)', 'custom-text-domain' ), 'custom_attributes' => array( 'min' => 1, 'max' => 25, ), 'id' => 'custom_randon_value', 'priority' => 40, );
Selectieveld in de WooCommerce checkout
$fields['billing']['custom_field_license_type'] = array( 'type' => 'select', 'class' => array( 'form-row-wide' ), 'input_class' => array( 'country_select' ), 'label' => __( 'License Type', 'custom-text-domain' ), 'required' => true, 'placeholder' => __( 'Please choose license type', 'custom-text-domain' ), 'options' => array( 'basic' => __( 'Basic', 'custom-text-domain' ), 'enterprise' => __( 'Enterprise', 'custom-text-domain' ), ), 'id' => 'custom_field_license_type', 'priority' => 41, );
Extra velden WooCommerce checkout opslaan
Voeg deze code toe in de functions.php van je WordPress thema of de Code Snippets plugin.
add_action( 'woocommerce_checkout_update_order_meta', 'save_data' ); function save_data( $order_id ) { if ( ! isset( $_POST['custom_field_license'] ) ) { return; } $license = sanitize_text_field( $_POST['custom_field_license'] ); update_post_meta( $order_id, '_order_custom_license', $license ); }
Extra velden WooCommerce bestelling zichtbaar maken
Voeg deze code toe in de functions.php van je WordPress thema of de Code Snippets plugin.
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_data' ); function display_custom_data( $order ) { $license = $order->get_meta( '_order_custom_license', true ); ?> : <?php }