Potvrdenie obchodných podmienok a GDPR pri potvrdení objednávky

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.

  1. //custom checkout fields
  2. add_action( 'woocommerce_review_order_before_submit', 'bt_add_checkout_checkbox_vop', 10 );
  3. /**
  4.  * Add WooCommerce additional Checkbox checkout field
  5.  */
  6. function bt_add_checkout_checkbox_vop() {
  7.  
  8.     woocommerce_form_field( 'checkout_checkbox_vop', array( // CSS ID
  9.        'type'          => 'checkbox',
  10.        'class'         => array('form-row mycheckbox'), // CSS Class
  11.        'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
  12.        'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
  13.        'required'      => true, // Mandatory or Optional
  14.        'label'         => 'Súhlasím so <a href="https://tvoja-stranka.sk/wp-content/uploads/2021/07/vop.pdf" target="_blank" rel="noopener">Všeobecnými obchodnými podmienkami</a>', // Label and Link
  15.     ));    
  16. }
  17.  
  18. add_action( 'woocommerce_checkout_process', 'bt_add_checkout_checkbox_warning_vop' );
  19.  
  20. function bt_add_checkout_checkbox_warning_vop() {
  21.     if ( ! (int) isset( $_POST['checkout_checkbox_vop'] ) ) {
  22.         wc_add_notice( __( 'Prosím, potvrďte, že súhlasíte s obchodnými podmienkami' ), 'error' );
  23.     }
  24. }
  25.  
  26.  
  27. add_action( 'woocommerce_review_order_before_submit', 'bt_add_checkout_checkbox_gdpr', 10 );
  28. function bt_add_checkout_checkbox_gdpr() {
  29.  
  30.     woocommerce_form_field( 'checkout_checkbox_gdpr', array( // CSS ID
  31.        'type'          => 'checkbox',
  32.        'class'         => array('form-row mycheckbox'), // CSS Class
  33.        'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
  34.        'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
  35.        'required'      => true, // Mandatory or Optional
  36.        'label'         => 'Súhlasím so <a href="https://tvoja-stranka.sk/wp-content/uploads/2021/07/gdpr.pdf" target="_blank" rel="noopener">spracovaním osobných údajov pre potreby objednávky</a>', // Label and Link
  37.     ));    
  38. }
  39.  
  40. add_action( 'woocommerce_checkout_process', 'bt_add_checkout_checkbox_warning_gdpr' );
  41.  
  42. function bt_add_checkout_checkbox_warning_gdpr() {
  43.     if ( ! (int) isset( $_POST['checkout_checkbox_gdpr'] ) ) {
  44.         wc_add_notice( __( 'Prosím, potvrďte, že súhlasíte so spracovaním osobných údajov' ), 'error' );
  45.     }
  46. }

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.

Potrebujete poradiť s nejakým WordPress problémom?
Spýtajte sa vo Facebook skupine WordPress pre začiatočníkov, radi pomôžeme.

PRIDAŤ SA DO SKUPINY

Pridajte komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Scroll to Top