Adatkezelési nyilatkozat és ÁSZF elfogadási checkboxok a WooCommerce Pénztár oldalára előnézeti képe

Adatkezelési nyilatkozat és ÁSZF elfogadási checkboxok a WooCommerce Pénztár oldalára

| Olvasási idő: 1 perc

Nagyon sokszor merül fel a kérdés, hogy hogyan lehet a WooCommerce Pénztár oldalán megjelenő mezőkhöz újabbakat hozzáadni - leginkább az Általános Szerződési Feltételek és az Adatkezelési Szabályzat/Nyilatkozat elfogadását kötelezővé tevőket. Ebben a bejegyzésben azt mutatom meg, hogyan teheted ezt meg, pluginek használata nélkül. 

A megszokott módon hozzunk létre egy fájlt az mu-plugins mappában, woocommerce-accept-fields.php néven, az alábbi tartalommal: 

php
<?php
/*
Plugin Name: WooCommerce ToS & Privacy checkbox fields
Plugin URI: https://www.webmenedzser.hu
Description: WooCommerce VAT number field on checkout
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/

function woocommerce_accept_tos_add_to_form( $checkout ) {
    echo '<div id="woocommerce_accept_tos"><h6>' . __('Accept Terms of Service') . '</h6>';

    woocommerce_form_field( 'accept_tos', array(
        'type'          => 'checkbox',
        'class'         => array('form-row-wide'),
        'label'         => __('I accept <a href="/terms-of-services" target="_blank">Terms of Service</a>.'),
        'required'      => true,
    ), $checkout->get_value( 'accept_tos' ));

    echo '</div>';
}
add_action( 'woocommerce_after_order_notes', 'woocommerce_accept_tos_add_to_form' );

function woocommerce_accept_tos_validation() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['accept_tos'] )
        wc_add_notice( __( 'Please read and accept our <a href="/terms-of-services" target="_blank">Terms of Service</a>.' ), 'error' );
}
add_action('woocommerce_checkout_process', 'woocommerce_accept_tos_validation');

A fenti kód első részében (woocommerce_accept_tos_add_to_form függvény) meghatározzuk, hogy a mezőnk milyen jellemzőkkel rendelkezzen, mi legyen a felirata, a típusa, illetve hogy kötelező legyen-e, netán szeretnénk-e CSS osztályokat ráilleszteni, majd ezt a függvényt a woocommerce_after_order_notes hooknál meghívjuk - ezzel meg is jelent a Pénztár oldalon, egy checkbox formájában. 

A második részben csak egy ellenőrzést iktattunk be, ami azt figyeli, hogy a woocommerce_checkout_process során elküldött adatban szerepel-e az accept_tos-nál érték - ha nem, akkor a megadott szöveggel hibát dob, és annak kijavításáig nem is engedi tovább a felhasználót. 

Ha szeretnénk az "adatvédelmi tájékoztató" elfogadást is kötelezővé tenni, ezt megtehetjük az alábbi kódrészletnek az előzőhöz fűzésével (valójában ugyanazt ismételjük, más értékekkel), így a végleges kód a következőképpen néz ki:

php
<?php
/*
Plugin Name: WooCommerce ToS & Privacy checkbox field
Plugin URI: https://www.webmenedzser.hu
Description: WooCommerce VAT number field on checkout
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/

function woocommerce_accept_tos_add_to_form( $checkout ) {
    echo '<div id="woocommerce_accept_tos"><h6>' . __('Accept Terms of Service') . '</h6>';

    woocommerce_form_field( 'accept_tos', array(
        'type'          => 'checkbox',
        'class'         => array('form-row-wide'),
        'label'         => __('I accept <a href="/terms-of-services" target="_blank">Terms of Service</a>.'),
        'required'      => true,
    ), $checkout->get_value( 'accept_tos' ));

    echo '</div>';
}
add_action( 'woocommerce_after_order_notes', 'woocommerce_accept_tos_add_to_form' );

function woocommerce_accept_tos_validation() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['accept_tos'] )
        wc_add_notice( __( 'Please read and accept our <a href="/terms-of-services" target="_blank">Terms of Service</a>.' ), 'error' );
}
add_action('woocommerce_checkout_process', 'woocommerce_accept_tos_validation');

function woocommerce_accept_privacy_policy_add_to_form( $checkout ) {
    echo '<div id="woocommerce_accept_privacy_policy"><h6>' . __('Accept Privacy Policy') . '</h6>';

    woocommerce_form_field( 'accept_privacy_policy', array(
        'type'          => 'checkbox',
        'class'         => array('form-row-wide'),
        'label'         => __('I accept <a href="/privacy-policy" target="_blank">Privacy Policy</a>.'),
        'required'      => true,
    ), $checkout->get_value( 'accept_privacy_policy' ));

    echo '</div>';
}
add_action( 'woocommerce_after_order_notes', 'woocommerce_accept_privacy_policy_add_to_form' );

function woocommerce_accept_privacy_policy_validation() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['accept_privacy_policy'] )
        wc_add_notice( __( 'Please read and accept our <a href="/privacy-policy" target="_blank">Privacy Policy</a>.' ), 'error' );
}
add_action('woocommerce_checkout_process', 'woocommerce_accept_privacy_policy_validation');

Gratulálok: két kötelező mezőt is hozzáadtál a Pénztár oldalhoz - plugin használata nélkül! :) 

Kérdés, kérés, óhaj-sóhaj? Küldj üzenetet! :)