Woocommerce vo svojom jadre neobsahuje možnosť vložiť checkboxy, pri ktorých by ste od svojich klientov vyžadovali súhlas s obchodnými podmienkami a súhlas so spracovaním osobných údajov.
Aby som to upresnil, Woocommerce poskytuje checkbox pre Všeobecné obchodné podmienky za predpokladu, že ich máte vytvorené ako stránku a nastavené v nastaveniach Woocommerce ako „stránku obchodných podmienok“. To však môže byť problém, pokiaľ VOP na svojej stránke máte uvedené vo formáte .pdf a nie ako samostatnú podstránku.
Naša slovenská legislatíva vyžaduje súhlas od zákazníka. Podľa nej nestačí, že je klient informovaný o ochrane osobných údajov a o všeobecných obchodných podmienkach, ale klient musí vyslovene vykonať akciu, ktorou tieto podmienky potvrdí. V našom prípade je touto akciou zaškrtnutie checkboxu.
Existuje kvantum pluginov, ktoré ponúkajú možnosť dopĺňať rozličné polia do pokladne, v konečnom dôsledku, niečo tak základné ako checkbox, nájdete na počudovanie len v ich platených verziách. Navyše sa checkbox neestetický zobrazuje pod textovým poľom, ktoré je určené na poznámky, my by sme ho však chceli umiestniť na samé dno – tesne nad tlačidlo potvrdenia objednávky.
Preto ponúkam tento jednoduchý snippet, ktorým pridáte dva checkboxy na koniec pokladne. Treba ho, ako zvyčajne, vložiť do súboru functions.php vašej child témy.
//custom checkout fields
add_action( 'woocommerce_review_order_before_submit', 'bt_add_checkout_checkbox_vop', 10 );
/**
* Add WooCommerce additional Checkbox checkout field
*/
function bt_add_checkout_checkbox_vop() {
woocommerce_form_field( 'checkout_checkbox_vop', array( // CSS ID
'type' => 'checkbox',
'class' => array('form-row mycheckbox'), // CSS Class
'label_class' => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
'input_class' => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
'required' => true, // Mandatory or Optional
'label' => 'Súhlasím so Všeobecnými obchodnými podmienkami', // Label and Link
));
}
add_action( 'woocommerce_checkout_process', 'bt_add_checkout_checkbox_warning_vop' );
function bt_add_checkout_checkbox_warning_vop() {
if ( ! (int) isset( $_POST['checkout_checkbox_vop'] ) ) {
wc_add_notice( __( 'Prosím, potvrďte, že súhlasíte s obchodnými podmienkami' ), 'error' );
}
}
add_action( 'woocommerce_review_order_before_submit', 'bt_add_checkout_checkbox_gdpr', 10 );
function bt_add_checkout_checkbox_gdpr() {
woocommerce_form_field( 'checkout_checkbox_gdpr', array( // CSS ID
'type' => 'checkbox',
'class' => array('form-row mycheckbox'), // CSS Class
'label_class' => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
'input_class' => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
'required' => true, // Mandatory or Optional
'label' => 'Súhlasím so spracovaním osobných údajov pre potreby objednávky', // Label and Link
));
}
add_action( 'woocommerce_checkout_process', 'bt_add_checkout_checkbox_warning_gdpr' );
function bt_add_checkout_checkbox_warning_gdpr() {
if ( ! (int) isset( $_POST['checkout_checkbox_gdpr'] ) ) {
wc_add_notice( __( 'Prosím, potvrďte, že súhlasíte so spracovaním osobných údajov' ), 'error' );
}
}
Ide vlastne o dve podobné funkcie, takže v ideálnom vesmíre by sa dali parametrizovať a dodržali by sme tak tzv. princíp DRY (Don’t repeat yourself – neopakuj sa). Tieto návody však, rovnako ako celý wp blog, nie sú určené profesionálnym WordPress programátorom, ale bežným ľuďom, ktorí hľadajú spôsoby ako svoje e-shopy vylepšiť. Z tohto pohľadu dúfam, že mi tentokrát bude odpustené.
Samotný kód sa skladá z dvoch funkcií, teda dvoch filtrov. Úlohou prvej funkcie bt_add_checkout_checkbox je jednoducho pridať checkbox do hooku „before_submit“ – čiže nad potvrdzovacie tlačidlo. Vlastne pridávame nový input, ktorý je typu checkbox, má nejaké triedy, label (pomenovanie). Za zmienku stojí kľúč s názvom „required“, ak je tento nastavený ako TRUE, bude pole vyžadované, ak je nastavený ako FALSE, bude pole dobrovoľné (napr. v prípade, ak by šlo o checkbox, ktorým sa prihlásime do newsletteru – nie každý zákazník musí chcieť hneď odoberať newsletter. Na opačnej strane – každý zákazník musí súhlasiť s obchodnými podmienkami…). Do kľúča label napíšeme znenie, ktoré chceme pri checkboxe zobraziť. Je možnosť tu, samozrejme, používať aj HTML tagy, a tým napr. časť textu označiť ako link na obchodné podmienky.
Úlohou druhej funkcie bt_add_checkout_checkbox_warning je skontrolovať, či bol checkbox zaškrtnutý. Ak tomu tak nie je, premenná $_POST[] nebude obsahovať číselnú hodnotu, podmienka sa vyhodnotí ako splnená, do wc_add_notice() funkcie sa nastaví chybová hláška a parameter „error“, čím sa vlastne zabráni spracovaniu objednávky do konca a zobrazí sa chyba, štýlovaná ako error (teda červená). Ak je checkbox zaškrtnutý, hodnota poľa $_POST[] bude 1 a objednávka sa úspešne spracuje.
Na odlíšenie medzi checkboxom pre VOP a checkboxom pre GDPR sú tieto dve skratky používané vo funkciách i parametroch.
Získajte prístup k ebooku ZDARMA, ktorý odhaľuje...
Ako môžete mať svoj prvý
WEB ONLINE EŠTE DNES?
(aj keď nie ste technický typ)
Programovaniu webových stránok sa venujem od roku 2006. Pracoval som vo viacerých menších, aj väčších firmách, vždy na pozícií developera. Viem programovať v PHP a poslednú dobu sa venujem výlučne menším a stredne veľkým projektom vo WordPresse.