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:

Adatkezelési nyilatkozat és ÁSZF elfogadási checkboxok a WooCommerce Pénztár oldalára
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.
<?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
/*
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! :)