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.
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.