Dátum a pénztárban

Ez a plugin azt teszi lehetővé, hogy a WooCommerce pénztár oldalán egy dátumot válasszon ki a vásárló. Ez a dátum a megrendeléshez kapcsolódik és megjeleníthető a rendelések listájában és/vagy a megrendelés paramétereinél is.

Főbb funkciók

  • Választható dátumok paraméterezése
    A plugin beállításainál számos paraméter segít a választható időtartam beállításában.
  • Tiltott napok
    Megadhatsz napokat, amelyeket semmiképpen nem lehet kiválasztani. (Pl. ünnepnapok)
  • Választható megjelenési hely
    Kiválasztható, hogy a WooCommerce pénztár oldalon belül hol jelenjen meg a dátum mező
  • Szállítási mód hozzárendelés
    Megadható, hogy mely szállítási módok esetén jelenjen meg a dátum választás.
    (Ha a WooCommerce-ben új szállítási módot hozol létre, akkor annál alapértelmezésben nem jelenik meg.)
  • Egyedi megjelenés lehetősége
    A plugin több lehetőséget kínál a megjelenés egyedivé tételére. (Ezek használatához kicsit több WordPress ismeretre van szükség.)
  • Utánrendelés figyelése
    Beállíthatod, hogy a plugin figyelje, hogy a megrendelésben van-e olyan tétel, amiből utánrendelésre van szükség (nincs készleten elegendő) és ez esetben további beállított napokkal növelje a legkorábbi kiválasztható dátumot.
A plugin beállításait a WooCommerce / Beállítások oldal “Integráció” fülön, a “Dátum bekérése a pénztárban” oldalon találod!

Szűrők és horgok

A program-kódokat a /libs/hooks.php fájlban találod.

  • A napok megjelenítése a dátum választó doboz fejlécében
    add_filter( 'request_a_date_render_days_in_week', 'request_a_date_403_render_days_in_week', 10, 1 );
  • Üres nap megjelenítése a naptárban (helyfoglaló)
    add_filter( 'request_a_date_render_empty_day', 'request_a_date_403_render_empty_day', 10, 1);
  • Egy nap megjelenítése a naptárban
    add_filter( 'request_a_date_render_day', 'request_a_date_403_render_day', 10, 3);
  • Gomb megjelenítése a dátum választó mező mellett
    add_filter( 'request_a_date_render_button', 'request_a_date_403_render_button', 10, 1);
  • A dátum választó megjelenítése táblázatos megjelenítés esetén
    add_filter('request_a_date_render_in_table', 'request_a_date_403_render_in_table', 10, 3);
  • A dátum választó megjelenítése nem táblázatos megjelenítés esetén
    add_filter('request_a_date_render_in_div', 'request_a_date_403_render_in_div', 10, 3);
  • Választott dátum megjelenítése a “thakyou” oldalon
    add_filter('request_a_date_render_in_thankyou', 'request_a_date_403_render_in_thankyou', 10, 2);
  • Dátum megjelenítése emailben
    add_filter('request_a_date_render_in_email', 'request_a_date_403_render_in_email', 10, 2);
  • Első lehetséges nap módosítása
    (Ez a szűrő nincs deklarálva, de ha definiálod, akkor használva lesz.)

    function request_a_date_my_modify_first($date) {
        $date = date_i18n('Y-m-d', strtotime('+1 day', strtotime($date)));
       	return $date;
    } 
    add_filter('request_a_date_modify_first', 'request_a_date_my_modify_first', 10, 1);
  • Utolsó lehetséges nap módosítása
    (Ez a szűrő nincs deklarálva, de ha definiálod, akkor használva lesz.)

    function request_a_date_my_modify_last($date) {
        $date = date_i18n('Y-m-d', strtotime('+1 day', strtotime($date)));
        return $date;
    } 
    add_filter('request_a_date_modify_last', 'request_a_date_my_modify_last', 10, 1);
  • Legkorábbi nap növelése
    (Ez a szűrő nincs deklarálva, de ha definiálod, akkor használva lesz.)

    function my_add_custom_days($days_count) {
        // A $days_count változóban azt kapja meg, hogy az utánrendelés miatt hány 
        // nappal kell későbbinek lennie a legkorábbi választható dátumnak.
    	return $days_count;
    } 
    add_filter('request_a_date_add_custom_days', 'my_add_custom_days', 10, 1);

Gomb testreszabása

A tapasztalat azt mutatja, hogy a témák sokfélesége miatt általában szükség van a gomb megjelenésének módosítására. Alapértelmezésben ez a class="button" osztályt kapja, ami az esetek többségében megfelelő, de sok esetben másra van szükség.

Az alábbi példában ezt módosítjuk a Bootstrap-nak megfelelően és a class="btn btn-secondary" osztályt adjuk a gombnak.

// Eredeti szűrő törlése
remove_filter( 'request_a_date_render_button', 'request_a_date_403_render_button');
function request_a_date_my_render_button($script) {
	// Itt használjuk a saját osztályt:
	$html = '<button type="button" '.$script.' class="btn btn-secondary">'.
            '<span class="dashicons dashicons-calendar-alt"></span>'.
            '</button>';
    return $html;
}
// Alkalmazzuk az új szűrőt
add_filter( 'request_a_date_render_button', 'request_a_date_my_render_button', 20, 1);

Gyakori kérdések

  • Szeretném, ha egyes termék kategóriák esetén későbbi lenne a legkorábbi dátum. Lehetséges ez?

    Igen, lehetséges. Ehhez a (child) témád functions.php-t kell szerkesztened és az alábbi kódot helyezned el benne:

    function my_add_custom_days($days_count) {
        // A $days_count változóban azt kapja meg, hogy az utánrendelés miatt hány 
    	// nappal kell későbbinek lennie a legkorábbi választható dátumnak.
    	
        // Ezek a termékek vannak a kosárban
    	$items = WC()->cart->get_cart();
        $add = 0;
        
        foreach ($items as $item) {
            $terms = get_the_terms( $item['product_id'], 'product_cat' );
            foreach ($terms as $term) {
                // A kategória slug vizsgálata
                switch ($term->slug){ 
                    // Ezen az elven minden slug vizsgálható
                	case 'other':
                        // Beállítod, ha nem nagyobb már. Így fogod megkapni a legmagasabb értéket.
                        if ($add < 4) {
                            // Természetesen annyira állítod, amennyire akarod
                            $add = 4;
                        }
                        break;
                	default :
                }            
            }
        }
        if ($add != 0) {
            // Ha növelni akarod a napok számát
            // return $days_count + $add;
            
            // VAGY
            // Ha a kettő közül a magasabbik értékét akarod használni
            if ($add > $days_count) {
                return $add;
            } else {
                return $days_count;
            }
                    
        } else {
            return $days_count;
        }     
    }
    add_filter('request_a_date_add_custom_days', 'my_add_custom_days', 10, 1);