Terug naar het blog

Wat is de woocommerce_checkout_fields filter en use cases – WooCommerce

2023-03-123 minuten leestijd

woocommerce_checkout_fields is een action hook in WooCommerce die wordt gebruikt om de afrekenvelden op de afrekenpagina weer te geven en te wijzigen. Wanneer deze hook wordt geactiveerd, genereert deze een array van afrekenvelden die worden gebruikt om het afrekenformulier te bouwen.

Deze array bevat verschillende velden, zoals factuurgegevens, verzendgegevens en bestelnotities, en elk veld wordt vertegenwoordigd door een array van eigenschappen. Deze eigenschappen omvatten het label van het veld, het type, de placeholder, de standaardwaarde, de vereiste status, enzovoort.

Standaard worden de afrekenvelden in een specifieke volgorde op de afrekenpagina weergegeven. U kunt echter de volgorde van de velden, hun eigenschappen en hun uiterlijk wijzigen met behulp van verschillende filters die aan deze hook zijn gekoppeld.

U kunt bijvoorbeeld de woocommerce_checkout_fields hook gebruiken om de volgorde van de velden te wijzigen, specifieke velden te verbergen, nieuwe velden toe te voegen of de eigenschappen van bestaande velden te wijzigen. U kunt ook aangepaste validatie toevoegen aan de afrekenvelden met behulp van deze hook.

Use cases van de woocommerce_checkout_fields hook

De volgorde van de afrekenvelden wijzigen

De eigenschap priority bepaalt de volgorde waarin de velden worden weergegeven. Hoe hoger de prioriteitswaarde, hoe lager het veld op de afrekenpagina verschijnt.

/**
 * Verander de volgorde van de afrekenvelden
 */
function filter_reorder_checkout_fields( $checkout_fields ) {
    $checkout_fields['billing']['billing_phone']['priority'] = 15;
    $checkout_fields['billing']['billing_email']['priority'] = 25;

    return $checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'filter_reorder_checkout_fields', 100 );

In het bovenstaande codefragment krijgt het veld billing_phone een prioriteitswaarde van 15 en het veld billing_email een prioriteitswaarde van 25. Dit betekent dat het telefoonveld vóór het e-mailveld op de afrekenpagina zal verschijnen.

Eigenschappen van de afrekenvelden wijzigen

/**
 * Stel een klasse en het readonly attribuut in voor afrekenvelden
 */
function filter_reorder_checkout_fields( $checkout_fields ) {
    // Haal het huidige gebruikersobject op.
    $current_user = wp_get_current_user();
    // Als de huidige gebruiker is ingelogd, forceer dan dat het e-mailadres het e-mailadres van de huidige gebruiker is
    if ( $current_user->ID ) {
        $checkout_fields['billing']['billing_email']['class'][] = 'hidden-field';
        $checkout_fields['billing']['billing_email']['custom_attributes']   = [ 'readonly' => true ];
    }

    return $checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'filter_reorder_checkout_fields', 100 );

Het bovenstaande codefragment controleert of de huidige gebruiker is ingelogd door de ID-eigenschap van het huidige gebruikersobject te controleren. Als de gebruiker is ingelogd, voegt de code een CSS-klasse genaamd hidden-field toe aan het billing_email-veld onder de billing-sleutel van de $checkout_fields-array. Deze klasse kan worden gebruikt om het e-mailveld op de afrekenpagina te verbergen, zodat het e-mailadres van de gebruiker niet kan worden gewijzigd tijdens het afrekenen.

Bovendien voegt de code een custom_attributes-eigenschap toe aan het billing_email-veld met een readonly-attribuut ingesteld op true. Hierdoor wordt het e-mailveld alleen-lezen, zodat de gebruiker hun e-mailadres niet kan wijzigen, zelfs als ze erin slagen het veld zichtbaar te maken.

Categorieën: