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. 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 <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
    ));    
}

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 <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
    ));    
}

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.

Pridajte komentár

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

Návrat hore