ceske-sluzby
ceske-sluzby copied to clipboard
Nezobrazuje sa <DELIVERY_DATE/>
Nezobrazuje sa DELIVERY_DATE v XML Feedu pre heureku, v XML Feedu je zobrazený len ukončovaci tag DELIVERY_DATE/>.
V nastaveniach XML Feed mam nastavenú hodnotu Dodacia doba na 3.
V **zakladnych nastveniach _mam _vypnuté toto : Aktivovat možnost podrobného nastavení dodací doby, které bude dostupné zde.
Použivam najnovšiu verziu stiahnutu s mastra, a pozivam najnovsiu verziu woocommerce aj wordpressu.
@Kocarik: Díky za report, zkusil jsem stejné nastavení a ve feedu na adrese /?feed=heureka
se mi zobrazuje DELIVERY_DATE
s hodnotou 3. Jsou produkty skladem? Je možné web a feed někde vidět (případně napište)?
@pavelevap Aha tak v pri niektorých sa to zobrazuje, ale konkretnejsie Heureka hlasi túto chybu:
chýba u 98% položiek (243/248) položka DELIVERY_DATE. Dajte používateľom informáciu o dostupnosti vášho tovaru, zvyšuje to konverziu.
Ale ak produkt nie je skladom tak by mal dať deliveri date na na nejaku hodnotu, a ono neda ziadnu hodnotu da len ukončovaci tag a tak hlasi potom chybu heureka
Pokud produkt není vůbec skladem, tak se do feedu vůbec nedostane, což by mělo odpovídat pravidlům Heureky, která tam neprodejné produkty nechce. Pokud ale produkt není skladem, ale je možné si ho na webu objednat (zobrazuje se tam tlačítko pro přidání do košíku a možnost objednat), tak je uváděna prázdná hodnota. Ale koukám na manuál a vypadá to, že už to Heureka zase změnila a měla by tam být hodnota -1
.
Problém je řešen ještě zde: #20.
Jak máte produkty přesně nastavené? Zobrazujete tam někde na webu informaci, že jsou k dodání do 3 dnů?
@pavelevap @novetrendy Posielam obrazok v prílohe ako teda mam nastavene niektooré produkty , pri ktorých neukazuje ten deliveri date napr pri tomto produkte: <ITEM_ID>8112</ITEM_ID> <PRODUCTNAME>Lopta halový futbal MERCO INDOOR STAR v.5</PRODUCTNAME>
A tu je xml feed : https://www.tisha.sk/?feed=heureka a obrazok:
@pavelevap Prosim tak ako teda dalej postupovať , resp. ako vyriešiť problém ?
Ďakujem
@Kocarik: Na tento způsob nastavení zatím není plugin bohužel připraven. Jestli jsem to správně pochopil, tak máte označeno, že bude produkt k dodání za 5 - 10 dní (a zákazníci si ho mohou objednat), ale na druhou stranu je uveden skladem (s nulovým počtem kusů)? Jakým způsobem máte na webu uvedeno 5 - 10 dní? Používáte nějakou vlastní funkci nebo plugin?
Nastavení dodací doby v záložce XML feed se aplikuje pouze pro produkty, které jsou skladem, zatímco uvedený produkt není skladem (nulový počet kusů), takže je dodací doba obecně neznámá. Během několika dní ale bude doplněna možnost nastavení dodací doby u jednotlivých produktů + hromadné nastavení právě pro tyto případy (viz #20, zatím je rozpracovaná verze pod položkou "Aktivovat možnost podrobného nastavení dodací doby").
Jak to aktuálně vyřešit?
- Označit produkty jako skladem, pak bude pro feed použito nastavení dodací doby ze záložky XML feed.
- Počkat pár dní než bude dokončené nové nastavení.
@Kocarik Než @pavelevap připraví nové nastavení, můžete použít můj plugin a do nastavení českých služeb u globální dodací doby zadejte delivery_date
.
@novetrendy: Díky, pořád mi ale vrtá hlavou, jak to celé ideálně udělat :-) Někdo totiž může mít všechny produkty označené jako skladem (je to minimum práce) a chce u nich mít hromadně nastavenou dodací dobu 2 dny (aneb než mu dorazí od distributora), což je nyní možné nastavit na záložce XML feed. Vlastně tak ale nejsou oficiálně skladem v eshopu, ale u distributora.
Ale někdo jiný zase produkty označuje, že sice nejsou skladem, ale jsou dostupné na objednávku (také třeba za dva dny), viz např. @Kocarik. V tomto případě by se asi také mohlo automaticky aplikovat nastavení dodací doby ze záložky XML feed, ale co když tam budou i nějaké produkty označené skladem? Pokud někdo používá obě situace najednou (skladem i na objednávku), tak budou vlastně potřeba 2 různé globální nastavení + možnost detailního nastavení přímo na úrovni jednotlivých produktů / variant? A nastavení dodací doby u produktu bude platit pouze pro produkty, když jsou označené skladem nebo pro produkty, které jsou na objednávku? Nevím, jestli to zbytečně nekomplikuji, ale začínám v tom mít trochu zmatek :-)
@pavelevap Já bych to řešil tak:
- [x] Je aktivovaný sklad -> ANO -> Je počet ks skladem => '1' -> ANO -> Je nastavená DD u produktu -> ANO -> Zobraz DD
- [x] Je aktivovaný sklad -> ANO -> Je počet ks skladem => '1' -> ANO -> Je nastavená DD u produktu -> NE -> Zobraz globální DD
- [x] Je aktivovaný sklad -> ANO -> Je počet ks skladem => '1' -> NE -> Je povolený nákup na OBJ -> ANO -> Je nastavená DD u produktu -> ANO -> Zobraz DD
- [x] Je aktivovaný sklad -> ANO -> Je počet ks skladem => '1' -> NE -> Je povolený nákup na OBJ -> ANO -> Je nastavená DD u produktu -> NE -> Vyřaď z feedu // Zde je předpoklad pokud není nastavena DD na úrovni produktu, že shopmanager nechce produktu uvádět do feedu. Ale je zde i možnost, že bude globální DD nastavena třeba na 10 a všechny produkty na objednávku by v případě nenastavení DD na úrovni produktu brali globální DD 10. (Poznámka: Nebudeme zatím dělat další nastavení, ale vezmeme to automaticky. Pokud je globálně vše skladem, tak produkt označíme na objednávku s neznámou dostupností, pokud globálně není skladem, tak použijeme zadanou globální hodnotu.) Takže druhá možnost (k tomu by se mohl udělat globální option):
- [x] Je aktivovaný sklad -> ANO -> Je počet ks skladem => '1' -> NE -> Je povolený nákup na OBJ -> ANO -> Je nastavená DD u produktu -> NE -> Zobraz globální DD
- [x] Je aktivovaný sklad -> ANO -> Je počet ks skladem => '1' -> NE -> Je povolený nákup na OBJ -> NE -> Vyřaď z feedu (nebo DD -1) (Poznámka: -1 by to být nemělo, to by mělo jít objednat s neznámou dostupností)
- [x] Je aktivovaný sklad -> NE -> Je nastavená DD u produktu -> ANO -> Zobraz DD
- [x] Je aktivovaný sklad -> NE -> Je nastavená DD u produktu -> NE -> Zobraz globální DD
Doufám, že jsem nevynechal nějakou možnost.
A prosím mrkněte na #67 , <EXTRA_MESSAGE>
bych fakt už potřeboval. Zatím jsem přepsal kousek pluginu české služby a funguje mi to, ale kdyby byla volba zobrazovat přes custom field, byla by to paráda.
$extra_message = get_post_meta( $product_id, 'nt_extra_message', true );
if (!empty($extra_message)){
$xmlWriter->writeElement( 'EXTRA_MESSAGE', $extra_message);
}
@Kocarik Já to mám v pluginu nastavené tak, že pokud není DD nastavena, je automaticky 0, čili skladem.
@pavelevap @novetrendy Dakujem Vam panove za riesenie, nastavil som to teda na 0 ze vsetko skladom.
Dufam ze coskoro vijde dalsi update aj s fixom :) este raz dik za podpru aj plugin
@pavelevap @novetrendy Ako prosim niekde v kóde nastavým aspon na pevno dodaciu dobu pre všetky produkty na 3 dni ?
Ďakujem
@Kocarik: Stačí místo nuly nastavit hodnotu 3 (v záložce XML feed).?
@pavelevap Nastavil som tam hodnotu 3 a nefunguje, vsade mi da len ukoncovaci tag </Deliveri_Date>
A máte produkty označené skladem? Nebyl by nějaký odkaz (klidně soukromě)?
Tak toto bylo trochu peklo :-) Pokud máte ještě někdo zájem, tak můžete začít testovat, stáhněte si aktuální verzi ze speciální branche: https://github.com/pavelevap/ceske-sluzby/archive/74-dodaci-doba.zip
Pokusil jsem se (úspěšně) projít všechny možné scénáře (zaškrtal jsem si je výše, díky @novetrendy), takže jen čekám až někdo narazí na nějakou chybu nebo novou možnost :-) Ještě budu muset asi některé funkce trochu přepsat (a asi už budeme potřebovat unit testy), ale funkčnost by se moc měnit neměla.
Napadly mě ještě následující věci, které by možná chtělo implementovat/prodiskutovat:
- [x] Zatím přepisuji přímo hodnoty "Skladem", a to pomocí filtru
woocommerce_get_availability_text
. Možná by to někdo chtěl nepřepisovat, ale pouze doplnit jako další informaci, např. pomocí akcewoocommerce_single_product_summary
? Potom by ale docházelo zobrazení typu "Skladem" a pod tím "Dodací doba 3 dny". Podle mě je lepší tam mít třeba jen "Skladem do 3 dnů"? - [x] Obecně se dostupnost zobrazuje až u konkrétního produktu, možná bychom tam měli mít možnost pro zobrazení v různých výpisech (eshop, kategorie)?
- [x] Zatím jsem tam měl možnost vypnout zobrazování dodací doby na webu (a použít ji pouze pro feed), ale asi je to nesmysl? Heureka určitě kontroluje co je ve feedu a co na webu? Jaké s tím máte zkušenosti? Je to potřeba nebo mohu zrušit? Nakonec nebudeme rušit, celé nastavení bylo trochu překopáno, ale pokud to někdo nechce zobrazovat na webu, tak i to bude možné.
- [x] Zatím není nastavení funkční pro jednotlivé varianty a používá se globální doba. Asi by měly alespoň dědit případné nastavení produktu?
- [ ] Co se stane ve chvíli, když někdo změní nastavení hodnot pro dodací dobu, ale u produktů budou jiné hodnoty? Mám zakázat změnu nastavení pokud to nějaký produkt obsahuje? Nebo to řešit na straně selectu pro dodací dobu u produktu a tam upozornit a donutit ke změně. A nebo to ignorovat, používat pro feed, ale nezobrazovat na webu? Pokud někdo používá
{VALUE}
ve vlastním formátu a není nalezen příslušný text (tedy není hodnota nastavena), tak se nepoužije ani hodnota, což by asi měla? - [ ] Doplníme ještě možnost "Na dotaz" a/nebo "doba dodání neznámá", kam by šlo zadat odkaz na kontaktní stránku, případně použít email z administrace eshopu?
- [x] Možnost napojení vlastního uživatelského pole zatím funguje pouze pro XML feed. Byl by zájem toto pole použít i pro administraci a zobrazení na webu (abyste případně nemuseli používat další plugin)?
- [ ] Nastavení globální dodací doby máme (trochu nešťastně) na záložce "XML feed", ale co když někdo nechce vůbec používat XML, ale jen dodací dobu pro zobrazení na webu?
- [x] K dodací době doplníme ještě možnost zadat datum předobjednávky a následně ho použijeme v XML feedu.
- [ ] Umožnit nastavení i na úrovni kategorie nebo to nedává smysl?
- [x] Pokud není zapnuto podrobné nastavení dodací doby, tak by nemělo nic z toho fungovat, i když je to uložené v databázi.
- [ ] Pokud není zvolena žádná informace o dodací době pro feed, tak se mohou zobrazovat neplatné výsledky, asi by to chtělo pro jistotu ošetřit (ale co bude nastaveno defaultně)?
Tak možnost nastavení a zobrazení předobjednávky už máme, ještě zbývá:
- [x] Zobrazení nastavené hodnoty v XML feedu.
- [ ] Produkt s předobjednávkou by měl mít nastaveno "skladem", aby po uplynutí data nebylo na webu "dodáme za 3 dny"? I když i to je asi možné? Je to asi spíše k diskuzi...
- [x] Doplnit datepicker (JS) pro příjemnější zadávání data předobjednávky.
- [ ] Google umožňuje zobrazovat i čas, kdy začíná prodej, ale asi je to zatím zbytečné.
Pokud někoho něco napadne, tak sem s tím :-)
Tak hlavní funkce máme snad hotové (zkoušel někdo?), takže uděláme merge a pokračovat s drobnostmi budeme až v další verzi.
Brzy bude doplněna podpora pro nastavení dodací doby i v rámci variant, zbývá dořešit:
- [ ] Jak zobrazovat dodací dobu u variant? Pokud je to náhrada textu, tak je to bez problémů (po výběru varianty), ale zobrazení v archivech (či u produktu bez vybrané varianty) je složitější. Pokud má každá varianta jinou dodací dobu, tak zobrazíme tu nejkratší? Nebo raději žádnou?
- [ ] Umožníme hromadné nastavení dodací doby na úrovni produktu pro všechny varianty? Asi nebude problém u variant dědit nastavení produktu, ale budeme tuto informaci zobrazovat (viz bod výše)?
- [ ] Pozor, WooCommerce 2.4 a starší má jiný způsob pro zobrazení možností nastavení u variant v administraci. Buď to bude potřeba omezit verzí nebo doplnit podporu i pro starší verze (zatím oficiálně podporujeme i WooCommerce 2.2.x). Nezdá se to, ale je to kvůli neaktualizovaným prémiovým šablonám poměrně časté :-(
- [ ] Jak nejlépe identifikovat, zda je právě řešen jednoduchý produkt nebo konkrétní varianta?
if ( get_class( $product ) == "WC_Product_Variation" )
mi nepřijde moc elegantní :-( - [x] Pokud má uživatel definovanou i možnost Skladem (hodnota nula) a má globálně nastavenou hodnotu nula pro celý eshop, tak tuto možnost odebrat z nabídky dropdownu pro výběr dodací doby.
- [ ] Doplnit kontextovou nápovědu k variantám (vylepšit u produktů)
- [x] Doplnit možnost definování vlastního textu (a formátu) pro počet produktů, např. změna z "1 skladem" na "Skladem: 1".
- [x] Umožnit seskupování počtu produktů, např. "16 skladem" na "Skladem více než 10 ks" (+ doplnit třídu pro stylování).
- [ ] Odebrat "(dostupné na objednávku)" u počtu produktů skladem, když je nastaveno "Povolit, ale informovat zákazníka"?
- [ ] Zkontrolovat spouštěné akce pro zobrazování dodací doby + doplnit některé další (i pro další texty).
- [ ] Zkontrolovat, zda jsou správné údaje v XML (= to, co je zobrazováno na webu).
- [ ] Napsat návod s popisem všech možností + schéma (!)
- [x] Umožnit zobrazení "1 skladem, další dodáme do týdne".
- [x] Umožnit zobrazení hodnoty "Skladem" (defaultně se ve WooCommerce nezobrazuje).
- [x] Co defaultní (automaticky instalované) hodnoty pro dodací dobu? Když je někdo nechce používat, tak jsou stejně uloženy, neovlivní to něco?
- [x] Doplnit nastavení dodací doby do přehledu produktů v administraci.
@pavelevap
- Dodací dobu zobrazovat u každé varianty, pokud nemá varianta zadanou dodací dobu vzít z nadřazeného produktu, pokud nemá ani jednu, vzít z globální.
- Ano, umožnil bych nastavení DD na úrovni produktu včetně dědění pro varianty.
- :-( To bych nevěřil, ale je to celkem možné.
- Když jsem narychlo řešil varianty, spíchl jsem tento kód. Nemohl jsem v rychlosti najít, jak v adminu rozlišit typ produktu, tak jsem to obešel přes css
<div class="options_group show_if_simple show_if_external">
, což také není dvakrát elegantní, ale v časovém presu mi to pomohlo. Jinak pro jednoduchý produktif( $product->is_type( 'simple' ))
<?php
/** ADD DELIVERY DATE */
if ( get_option('nt_eddsdfs')['delivery_date_support'] == 1) {
add_action( 'woocommerce_product_options_general_product_data', 'nt_add_delivery_date_fields' ); // simple product
add_action( 'woocommerce_product_after_variable_attributes', 'nt_variable_delivery_date_variable_fields', 10, 3 ); // variable product
add_action( 'woocommerce_product_after_variable_attributes_js', 'nt_variable_delivery_date_variable_fields_js' ); // variable product
/** Add Delivery Date fields to simple product */
function nt_add_delivery_date_fields() {
global $woocommerce, $post, $product;
// Delivery Date Field - show only if product type = simple or external
?>
<div class="options_group show_if_simple show_if_external">
<?php
woocommerce_wp_text_input(
array(
'id' => 'delivery_date',
'label' => __( 'Delivery Date', 'nt-EDDSDFS'),
'placeholder' => __('Enter the Delivery Date', 'nt-EDDSDFS'),
'desc_tip' => 'true',
'description' => __( 'Enter the delivery date of the product in days.', 'nt-EDDSDFS')
)
);
?>
</div>
<?php
}
// Save Field Delivery Date - simple product
add_action( 'save_post', 'nt_dd_field_save',1 ,2 );
function nt_dd_field_save($post_id, $post) {
if( isset( $_POST['delivery_date'] ) ) {update_post_meta( $post_id, 'delivery_date', esc_html( $_POST['delivery_date'] ) );}
}
// VARIABLE
/**Create new fields for variations */
function nt_variable_delivery_date_variable_fields( $loop, $variation_data, $variation ) {
?>
<tr>
<td>
<?php
// Number Field
woocommerce_wp_text_input(
array(
'id' => 'variable_delivery_date['.$loop.']',
'label' => __( 'Delivery Date', 'nt-EDDSDFS' ),
'placeholder' => __('Enter the Delivery Date', 'nt-EDDSDFS'),
'desc_tip' => 'true',
'description' => __( 'Enter the delivery date of the product in days.', 'nt-EDDSDFS'),
'value' => get_post_meta($variation->ID, 'variable_delivery_date', true),
'custom_attributes' => array(
'step' => 'any',
'min' => '0'
)
)
);
?>
</td>
</tr>
<?php
}
/**
Create new fields for new variations
*/
function nt_variable_delivery_date_variable_fields_js($variation_data) {
// Number Field
woocommerce_wp_text_input(
array(
'id' => 'variable_delivery_date['.$loop.']',
'label' => __( 'Delivery Date', 'nt-EDDSDFS' ),
'placeholder' => __('Enter the Delivery Date', 'nt-EDDSDFS'),
'desc_tip' => 'true',
'description' => __( 'Enter the delivery date of the product in days.', 'nt-EDDSDFS'),
'value' => get_post_meta($variation->ID, 'variable_delivery_date', true),
'custom_attributes' => array(
'step' => 'any',
'min' => '0'
)
)
);
}
//Save variation fields with AJAX
add_action('woocommerce_ajax_save_product_variations', 'variable_fields_process', 10, 2);
function variable_fields_process($product_id) {
$variable_post_id = $_POST['variable_post_id'];
$variable_custom_field = $_POST['variable_delivery_date'];
foreach ($variable_post_id as $key => $value) {
if (isset($_POST['variable_delivery_date'][$key])) {
update_post_meta($value, 'variable_delivery_date', $variable_custom_field[$key]);
}
}
}
// Add New Variation Settings
add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );
/**
* Add custom fields for variations
*/
function load_variation_settings_fields( $variations ) {
$nt_variation_description = get_post_meta( $variations[ 'variation_id' ], '_variation_description', true );
$nt_variation_availability = get_post_meta( $variations[ 'variation_id' ], '_stock_status', true );
if ($nt_variation_availability == 'instock'){
$nt_variable_delivery_date = get_post_meta( $variations[ 'variation_id' ], 'variable_delivery_date', true );
if ($nt_variable_delivery_date == 0){$nt_variable_delivery_date_0 = get_option('nt_eddsdfs')['delivery_date_0'];
if (empty ($nt_variable_delivery_date_0)){$nt_variable_delivery_date = __('In Stock', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_0;}
elseif ($nt_variable_delivery_date <= 3){$nt_variable_delivery_date_3 = get_option('nt_eddsdfs')['delivery_date_3'];
if (empty ($nt_variable_delivery_date_3)){$nt_variable_delivery_date = __('Within three days', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_3;}
elseif ($nt_variable_delivery_date <= 7){$nt_variable_delivery_date_7 = get_option('nt_eddsdfs')['delivery_date_7'];
if (empty ($nt_variable_delivery_date_7)){$nt_variable_delivery_date = __('Within a week', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_7;}
elseif ($nt_variable_delivery_date <= 14){$nt_variable_delivery_date_14 = get_option('nt_eddsdfs')['delivery_date_14'];
if (empty ($nt_variable_delivery_date_14)){$nt_variable_delivery_date = __('1 - 2 weeks', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_14;}
elseif ($nt_variable_delivery_date <= 21){$nt_variable_delivery_date_21 = get_option('nt_eddsdfs')['delivery_date_21'];
if (empty ($nt_variable_delivery_date_21)){$nt_variable_delivery_date = __('2 - 3 weeks', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_21;}
elseif ($nt_variable_delivery_date <= 28){$nt_variable_delivery_date_28 = get_option('nt_eddsdfs')['delivery_date_28'];
if (empty ($nt_variable_delivery_date_28)){$nt_variable_delivery_date = __('2 - 4 weeks', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_28;}
elseif ($nt_variable_delivery_date <= 35){$nt_variable_delivery_date_35 = get_option('nt_eddsdfs')['delivery_date_35'];
if (empty ($nt_variable_delivery_date_35)){$nt_variable_delivery_date = __('3 - 5 weeks', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_35;}
elseif ($nt_variable_delivery_date <= 42){$nt_variable_delivery_date_42 = get_option('nt_eddsdfs')['delivery_date_42'];
if (empty ($nt_variable_delivery_date_42)){$nt_variable_delivery_date = __('4 - 6 weeks', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_42;}
elseif ($nt_variable_delivery_date >= 43){$nt_variable_delivery_date_56 = get_option('nt_eddsdfs')['delivery_date_56'];
if (empty ($nt_variable_delivery_date_56)){$nt_variable_delivery_date = __('4 - 7 weeks', 'nt-EDDSDFS');}
else $nt_variable_delivery_date = $nt_variable_delivery_date_56;}
$nt_output_variable_delivery_date = '<div class="woocommerce_dd">' . '<br /><span style="' . get_option('nt_eddsdfs')['css_delivery_date'] . '">' . $nt_variable_delivery_date . '</span><br /><br />';
$variations['variation_description'] = $nt_variation_description . $nt_output_variable_delivery_date;}
return $variations;
}
/** Show Delivery Date in product details */
if ( get_option('nt_eddsdfs')['delivery_date_product_details'] == 1) {
add_action( 'woocommerce_single_product_summary', 'delivery_details_simple_product', 9 );
}
// Show Delivery Date on archive pages
if ( get_option('nt_eddsdfs')['delivery_date_archive_page'] == 1) {
add_action( 'woocommerce_before_shop_loop_item_title', 'delivery_details_simple_product' );
}
function delivery_details_simple_product() {
global $product;{
$nt_delivery_date = get_post_meta( $product->id, 'delivery_date', true );
if( $product->is_type( 'simple' )){
if ($nt_delivery_date == 0){$delivery_date_days_0 = get_option('nt_eddsdfs')['delivery_date_0'];
if (empty ($delivery_date_days_0)){$nt_delivery_date = __('In Stock', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_0;}
elseif ($nt_delivery_date <= 3){$delivery_date_days_3 = get_option('nt_eddsdfs')['delivery_date_3'];
if (empty ($delivery_date_days_3)){$nt_delivery_date = __('Within three days', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_3;}
elseif ($nt_delivery_date <= 7){$delivery_date_days_7 = get_option('nt_eddsdfs')['delivery_date_7'];
if (empty ($delivery_date_days_7)){$nt_delivery_date = __('Within a week', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_7;}
elseif ($nt_delivery_date <= 14){$delivery_date_days_14 = get_option('nt_eddsdfs')['delivery_date_14'];
if (empty ($delivery_date_days_14)){$nt_delivery_date = __('1 - 2 weeks', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_14;}
elseif ($nt_delivery_date <= 21){$delivery_date_days_21 = get_option('nt_eddsdfs')['delivery_date_21'];
if (empty ($delivery_date_days_21)){$nt_delivery_date = __('2 - 3 weeks', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_21;}
elseif ($nt_delivery_date <= 28){$delivery_date_days_28 = get_option('nt_eddsdfs')['delivery_date_28'];
if (empty ($delivery_date_days_28)){$nt_delivery_date = __('2 - 4 weeks', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_28;}
elseif ($nt_delivery_date <= 35){$delivery_date_days_35 = get_option('nt_eddsdfs')['delivery_date_35'];
if (empty ($delivery_date_days_35)){$nt_delivery_date = __('3 - 5 weeks', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_35;}
elseif ($nt_delivery_date <= 42){$delivery_date_days_42 = get_option('nt_eddsdfs')['delivery_date_42'];
if (empty ($delivery_date_days_42)){$nt_delivery_date = __('4 - 6 weeks', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_42;}
elseif ($nt_delivery_date >= 43){$delivery_date_days_56 = get_option('nt_eddsdfs')['delivery_date_56'];
if (empty ($delivery_date_days_56)){$nt_delivery_date = __('4 - 7 weeks', 'nt-EDDSDFS');}
else $nt_delivery_date = $delivery_date_days_56;}
echo '<div class="woocommerce_dd">';
echo '<span style="' . get_option('nt_eddsdfs')['css_delivery_date'] . '">' . $nt_delivery_date . '</span><br />';
echo '</div>';
} //end product type = simple
}
} //end function delivery_details_simple_product
} //end delivery date support option
Poslední úpravy funkce pro nastavení dodací doby přinesly zajímavý pozitivní důsledek. Pokud někdo nastaví nějakou dodací dobu u produktu, ale následně to zapomene změnit a doplní počet kusů (takže je produkt skladem), tak to bude bráno jako relevantní a bude to mít přednost před nastavením pluginu. Minulá verze 0.5 upřednostnila v tomto případě nastavení dodací doby, což bylo špatně, protože už byl produkt reálně skladem.
- [ ] Ve WooCommerce 3.3 byl přidán nový status
onbackorder
, bude potřeba ho začlenit do logiky dodací doby a vše otestovat (podrobnosti). - [ ] Funkce
ceske_sluzby_ziskat_nastavenou_dostupnost_produktu()
je velmi podobná funkciceske_sluzby_xml_ziskat_dodaci_dobu_produktu()
, chtělo by to asi sloučit (a funkce rozsekat na jednotlivé metody).