pavelevap / ceske-sluzby Goto Github PK
View Code? Open in Web Editor NEWČeské služby pro WordPress
České služby pro WordPress
Heuréka změnila implementační script pro měření konverzí a od 1.9.2015 již nenačítá konverze pomocí starší verze.
Myšlienka : Aby zákazník mohol vybrať typ dopravcu, ak má nárok na dopravu zdarma.
Vo všeobecnosti Woo Eshopy majú dopravu zdarma, ale neponúkajú typ doručenia. Príklad Poštou, kuriérom alebo uloženkou...
Už to umí jeden plugin: https://wordpress.org/plugins/custom-account-fields/
Buď něco z něj převzít (prověřit funkčnost) nebo na něj pouze na vhodném místě odkázat.
Kód převzat z jiného požadavku: #19
<?php
/** Přidá dobu doručení a EAN k produktu */
// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields_nt' );
// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save_nt' );
function woo_add_custom_general_fields_nt() {
global $woocommerce, $post;
// Text Field
woocommerce_wp_text_input(
array(
'id' => 'ean',
'label' => __( 'EAN', 'woocommerce' ),
'placeholder' => 'Zadejte EAN',
'desc_tip' => 'true',
'description' => __( 'Zadejte EAN produktu.', 'woocommerce' )
)
);
woocommerce_wp_text_input(
array(
'id' => 'delivery_date',
'label' => __( 'Doručení', 'woocommerce' ),
'placeholder' => 'Zadejte doručení',
'desc_tip' => 'true',
'description' => __( 'Zadejte doručení produktu.', 'woocommerce' )
)
);
}
function woo_add_custom_general_fields_save_nt( $post_id ){
// Textarea
$woocommerce_ean = $_POST['ean'];
if( !empty( $woocommerce_ean ) )
update_post_meta( $post_id, 'ean', esc_html( $woocommerce_ean ) );
// Textarea
$woocommerce_delivery_date = $_POST['delivery_date'];
if( !empty( $woocommerce_delivery_date ) )
update_post_meta( $post_id, 'delivery_date', esc_html( $woocommerce_delivery_date ) );
}
/** Zobrazí dobu doručení v detailu produktu */
add_action( 'woocommerce_single_product_summary', 'doruceni_detail', 5 );
function doruceni_detail() {
global $product;
// Do not show this on variable products
/*if ( $product->product_type <> 'variable' )*/ {
$dd = get_post_meta( $product->id, 'delivery_date', true );
if ($dd == 0)
{$dd = 'Skladem';}
elseif
($dd <= 7)
{$dd = 'Do týdne';}
elseif
($dd <= 14)
{$dd = '1 - 2 týdny';}
elseif
($dd <= 21)
{$dd = '2 - 3 týdny';}
elseif
($dd <= 28)
{$dd = '2 - 4 týdny';}
elseif
($dd <= 35)
{$dd = '3 - 5 týdnů';}
elseif
($dd <= 42)
{$dd = '4 - 6 týdnů';}
elseif
($dd >= 56)
{$dd = '4 - 7 týdnů';}
echo '<div class="woocommerce_dd">';
echo '<span class="delivery--date">' . $dd . '</span><br />';
/** DOPRAVA ZDARMA */
$rp = $product->get_price();
if ($rp >= 10000)
{echo '<span class="doprava--zdarma">DOPRAVA ZDARMA !!!</span>';}
echo '</div>';
}
}
// Optional: To show on archive pages
add_action( 'woocommerce_after_shop_loop_item_title', 'doruceni_detail' );
/** */
remove_filter('woocommerce_cart_item_remove_link', 'woocommerce_cart_item_remove_link');
/**
* Přidá štítek DOPRAVA ZDARMA na stránku s produkty
*/
add_action( 'woocommerce_before_shop_loop_item_title', 'sticky_doprava_zdarma', 10 );
function sticky_doprava_zdarma ()
{
global $product;
$sdz = $product->get_price();
if ($sdz >= 10000)
{echo '<div class="sdz"><span class="sticky-doprava-zdarma">DOPRAVA ZDARMA</span></div>';}
}
/**
* Přidá krátký popisek zboží a dobu doručení, které se zobrazí v katalogu nad názvem zboží
*/
add_action('add_meta_boxes', 'product_title_desc_box');
add_action('save_post', 'product_title_desc_save', 1, 2);
function product_title_desc_box(){
add_meta_box('product_title_desc_box', 'Krátký popisek', 'product_title_desc_form', 'product','side', 'core');
wp_nonce_field( basename( __FILE__ ), 'smashing_post_class_nonce' );
}
function product_title_desc_form($post){
wp_nonce_field( basename( __FILE__ ), 'product_title_description_nonce' );
$title_description = get_post_meta($post->ID, 'title-description', true);
?> <p><label for="title-description">Zadejte krátký popisek produktu, který se zobrazí nad nadpisem produktu v katalogu</label>
<br />
<input type="text" name="title-description" id="title-description1" value="<?php echo $title_description ; ?>"/>
</p>
<?php
}
function product_title_desc_save($post_id, $post ){
if(!isset( $_POST['title-description']) || !wp_verify_nonce($_POST['product_title_description_nonce'], basename(__FILE__)))
{
return $post_id;
}
$post_type = get_post_type_object( $post->post_type );
/* Check if the current user has permission to edit the post. */
if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
return $post_id;
$description = $_POST['title-description'] ;
update_post_meta( $post_id, 'title-description', $description);
}
add_action( 'woocommerce_before_shop_loop_item_title', 'my_add_short_description', 9 );
function my_add_short_description()
{
global $product;
{
$td = get_post_meta( $product->id, 'title-description', true );
echo '<div class="woocommerce_td">';
echo '<span class="title-description">' . substr($td, 0, 80) . '<br /></span>'; // Omezí počet znaků výpisu echo na 80 znaků
echo '</div>';
}
}
Bude třeba zjistit, co to přesně dělá...
Pokusit se odesílat nově publikované příspěvky a stránky do indexu Seznam.cz
http://panzero.blog.cz/1311/jak-rychle-pridat-stranky-do-seznam-indexu
Těžko říci, jaký to bude mít efekt pro rychlost indexace, uvidíme...
Implementace widgetu by měla být velmi jednoduchá.
V nastavení bude pouze možnost vlevo/vpravo + hodnota posunutí shora. Použit musí být také API klíč pro měření konverzí.
Tato služba se mi líbí :-)
Narazil jsem na problém u jednoho shopu, který má kolem 20 tisíc produktů. I když má 256 MB memory limit, tak je pořád hláška memory exhaust.
Eshop je napojený na cloudflare s SSL flexibile. Plugin běží pokud stránka není pod HTTPS, kdy se zobrazí logo a výběr poboček, ale při HTTPS se nezobrazí logo a ani výběr poboček. Tuším tedy že bude problém s HTTPS.
Ahoj, máš někde nějaký nápady/požadavky, co by se mohlo doplnit do pluginu? Díky
Na úrovni kategorie i jednotlivého produktu.
http://www.heureka.cz/direct/xml-export/shops/heureka-sekce.xml
http://www.fio.cz/bankovni-sluzby/api-bankovnictvi
Tuto funkci potřebuji :-)
Nastavení DPD ParcelShop způsobuje problémy u uživatelů, kteří mají aktivní rozšíření Suhosin (např. Active24).
Obvykle tam mají následující omezení:
suhosin.post.max_name_length = 64
Délka indexu odesílané hodnoty tedy nesmí být větší než 64 znaků.
Bohužel nastavení proměnné pro DPD ParcelShop má 68 znaků (jako jediné nastavení): woocommerce_ceske_sluzby_dpd_parcelshop_dpd_parcelshop_zakladni-cena
A tak není zadaná hodnota odesílána (a ukládána).
Zbytečně se nám tam v názvu duplikuje dpd_parcelshop
, ale nemohu to jen tak odebrat, protože už to má mnoho set webů nastaveno (a uloženo v databázi) v této podobě... Bude to chtít nějaké řešení, kde bude nastavení automaticky migrováno (např. po aktualizaci pluginu)...
co říkáte na kompatibilitu pluginu s php 7? Jeho rychlost má být o 50% více než u 5.x
https://make.wordpress.org/core/2015/09/10/wordpress-and-php7/
DELIVERY_ID
DELIVERY_PRICE
DELIVERY_PRICE_COD
Ideálně asi nějak automaticky generovat informace o dopravě na základě aktivních možností dopravy?
U některých produktů (např. podle výše ceny) by měla být podporována doprava zdarma.
Patrně souvislost s bodem #17.
U DPD ParcelShop se nezapočítává DPH na dopravu.
Upravil jsem zakomentovaním v class-ceske-sluzby-dpd-parcelshop.php na řádku 29.
//'calc_tax' => 'per_item'
Pokud někdo používá jednoduše generované feedy a zapne WP Super Cache, tak to může začít způsobovat problémy.
Zákazníci na woocommerce často zadávají špatný email, např namísto gmail.com zadají .cz a email jim nedorazí.
existuje řešení https://wordpress.org/plugins/woocommerce-email-validation/
toto řešení ale jen zdvojuje políčko emailu, aby ho zákazník napsal 2x.
napadla mě možnost přidat vertifikaci emailu v reálném čase, nic jsem už udělané na Woo ani nenašel.
Příklad ověření validity zde: http://email-checker.net/
Pro produkty a jejich varianty bychom měli umožnit změnu názvu.
Napriklad Heureka mi nepridala produkt s názvom Parrot Flower Power.
Ale po zmene na Parrot Flower Power Hnedý už produkt bez problémov pridali. A ja nechcem mať na stránke to hnedý.
Pri niektorých produktoch napríklad na stránek nechcem mať značku v názve atď.
ďakujem za ochotu
Patrně by se daly použít elementy PRODUCT
a PRODUCTNAME
? Nebo to s tím nesouvisí?
Při použití více měn s pluginem Woocommerce Currency Switcher je problém, že plugin použitý v Českých službách Pay for Payment přidané poplatky nezahrnuje. Což ve výsledku znamená, že pokud mám například zvolenou měnu Euro - produkty OK, doprava OK, ale polatek za dobírku se nepřepočítá, jen se změní z Kč na Euro. A poplatek za dobírku 30 Euro je celkem hodně.
Níže je dočasné řešení:
V souboru woocommerce-payforpayment.php řádek 190 - 195 nahradit kódem
$this->_fee = (object) array(
'fee_title' => $fee_title,
'cost' => $cost = apply_filters('woocs_exchange_value', $cost),
'taxable' => $taxable,
'tax_class' => $tax_class,
);
Důležitý je řádek
'cost' => $cost = apply_filters('woocs_exchange_value', $cost),
kde jsem použil filtr woocs_exchange_value
Proto prosím o integrci přímo do českých služeb, hlavně kvůli následným aktualizacím pluginu Pay4Payment.
https://wordpress.org/plugins/woocommerce-currency-switcher/
Plugin to sice umí, ale asi až v placené verzi a hodilo by se to i pro jiné případy mimo plugin...
Ale zatím je to jen nápad :-)
Faktury (a notifikace) by měly obsahovat i tyto údaje...
Čas od času je nutné některé produkty vyřadit z feedu.
Nyní potřebuji vyřadit z feedu veškeré produkty v en + jednu kategorii (WPML)
Nenapadá Vás nějaké rychlé řešení? Něco jako
if (product_id= array (1,2,3,4,) ) {
kód
}
else (product_category id= array (1,2,3,4)) {
kód
}
Pro později by bylo dobré přidat k produktu checkbox, který po zatržení vyřadí produkt z feedu.
To samé i u kategorie produktu.
Protože uživatelé špatně hledají a neví kde naleznou adresy feedů (nehledě k tomu, že někteří shopadmini nemají přístup do nastavení wc) přikládám snippet na widget na nástěnku.
/** Feedy dashboard widget */
function feeds_dashboard_widget() {
$url_heureka = site_url('?feed=heureka');
$url_zbozi = site_url('?feed=zbozi');
$url_pricemania = content_url('pricemania.xml');
$dirsd = get_stylesheet_directory_uri();
echo "
<table style='width:100%;'><tbody>
<tr>
<td style='width:50%;'><img style='margin-top:10px;' src='{$dirsd}/images/Heureka.png' /> </td>
<td style='width:50%'><h3>Feed pro Heureka.cz najdete <a href='$url_heureka'>zde.</a></h3> </td>
</tr>
<tr>
<td colspan='2'>$url_heureka </td>
</tr>
<tr>
<td style='width:50%;'><img style='margin-top:10px;' src='{$dirsd}/images/Zbozi.png' /> </td>
<td style='width:50%'><h3>Feed pro Zbozi.cz najdete <a href='$url_zbozi'>zde.</a></h3> </td>
</tr>
<tr>
<td colspan='2'>$url_zbozi </td>
</tr>
<tr>
<td style='width:50%;'><img style='margin-top:10px;' src='{$dirsd}/images/Pricemania.png' /> </td>
<td style='width:50%'><h3>Feed pro Pricemania.cz najdete <a href='$url_pricemania'>zde.</a></h3> </td>
</tr>
<tr>
<td colspan='2'>$url_pricemania </td>
</tr>
</tbody></table>";
}
function add_feeds_dashboard_widget() {
wp_add_dashboard_widget('feeds_dashboard_widget', 'Adresy feedů', 'feeds_dashboard_widget');
}
add_action('wp_dashboard_setup', 'add_feeds_dashboard_widget');
Samnozřejmě pro plugin je nutné změnit cestu k image a nahrát loga (šířka loga 160px)
.
Pridanie Woocommerce Email Attachment ktoré bolo odsúhlasené autorom.
https://github.com/mikaelz/wp-plugin/tree/master/woocommerce-email-attachment
Jedná sa o plugin ktorý umožní pridať 2 lubovolné prílohy napríklad 2 pdf súbory k emailu ktorý sa odosiela po objednávke.
Viac info:
Adds 2 attachments to processing email.
Due law change http://blog.riesenia.com/fotak-na-dovolenku-zadarmo-alebo-nove-pravidla-pre-e-shopy/ it
is needed to send 2 forms with the order (http://www.nakupujbezpecne.sk/docs/form/odstupenie%20od%20zmluvy.pdf, http://www.nakupujbezpecne.sk/docs/form/reklamacia.pdf).
Law info available at http://nakupujbezpecne.sk/docs/zakony/102_2014.pdf
Nebylo by na škodu přidat do Českých služeb podmíněné zobrazení platebních možností v závislosti na typu dopravy.
Kousek kódu přikládám, stačí jen přidat nějaké admin rozhraní.
function nt_relevantni_platebni_metody ($available_gateways) {
global $woocommerce;
$packages = $woocommerce->shipping->get_packages();
foreach ( $packages as $i => $package ) {
$chosen_method = isset( $woocommerce->session->chosen_shipping_methods[ $i ] ) ?
$woocommerce->session->chosen_shipping_methods[ $i ] : '';
// pokud je aktivováno doručení (id doručení)
if ('nt_shipping1' == $chosen_method) {
// zakážeme platební metodu
unset($available_gateways['bacs']);
}
// pokud je aktivováno doručení (id doručení)
else if ('nt_shipping2' == $chosen_method) {
// zakážeme platební metodu
unset($available_gateways['cod']);
break;
}
}
return $available_gateways;}
add_filter('woocommerce_available_payment_gateways','nt_relevantni_platebni_metody');
Je to z důvodu, pokud někdo využívá Table Rate Shipping, nebo nějaké další způsoby dopravy většinou nemá možnost jak omezit platby.
Příklad z TRS:
Třída - Česká pošta na dobírku (Musíme omezit jen platbu COD)
Třída - Česká pošta platba na účet (Musíme omezit jen na platbu BACS)
Já sám využívám vlastní shipping methods, které by se také časem mohli přidat do České služby.
Css naštýlovanie heureka exportu recenzií
Možná časem vyzkoušíme :-)
Nejen pro eshop, ale i další různé akce uživatelů (topování).
Agregované dopravní služby poslední dobou stále přibývají, uvidíme, která se stane nejoblíbenější...
Pro některé eshopy je důležité generovat do XML i jednotlivé varianty.
Nebylo by na škodu zavést podporu i pro Geis Point a Balík Na poštu.
Nyní se snažím zprovoznit výběr poboček Zásilkovny, ale nějak se mi nedaří. Pokud se mi to ale povede, tak se zkusím podívat na ten Geis Point, protože ten bych využil i já ve svém shopu.
SK : Slovenská pošta,DHL, DPD,TEN EXPRES / GEIS, GLS, DHL ,FEDEX, IN TIME, REMAX, TNT EXPRES, UPS
CZ : Česká pošta, DHL, DPD, PPL
Dobrý den,
našel jsem Váš výše uvedený plugin a zkusil jsem jej mimo jiné pro vytvoření feedu z mého Woocommerce eshopu do Heureky. Bohužel mi přišla zpět odpověď z Heureky, že ve feedu se mi objevují i služby mé firmy (např. školení), které Heureka neumí (nebo nechce) zpracovat. Existuje nějaký jednoduchý způsob, jak určité produkty nebo kategorie produktů z feedů odstranit ? Možná by se to hodilo i ostatním uživatelům…
Automatické doplnění fakturačních údajů po zadání IČ (případně kontrola zadaných údajů).
Zatím byla zadaná cena považována za konečnou, bude třeba respektovat nastavení WooCommerce ohledně DPH a podle toho rozlišovat v XML feedu cenu.
Patrně lze použít základní WP All Import plugin, ale chybí tam pár drobností.
https://wordpress.org/support/topic/ppl-parcelshop
Varianta
Pro začátek by to stačilo udělat jednoduše, stejně jak to máte pro DPD Parcelshop.
Nejlepší by bylo přidat položky PPL dobírka (klasické doručení PPL) a položku PPL Parcelshop - výběr ze select boxu stejně jako u DPD. Přidat rovněž doručení na Slovensko a možnost volby jiné ceny doručení. Další dobrou informací by bylo do objednávky uložit/poslat i kód dané pobočky vč. základních údajů o pobočce. Pod selectbox by bylo dobré doplnit informaci např. Pobočku si můžete vybrat na mapě s odkazem na tu mapu parcelshopu (nofollow odkaz do nového okna/záložky).
Je třeba myslet na aktualizaci dat o pobočkách, dotahovat je z jejich api.
Varianta
Lepší varianta by byla následující, podobně by se mohla udělat i pro DPD Parcelshop.
Výběr pobočky pomocí autocomplete, po vybrání vypsat informace o pobočce vč. otevírací doby apod (např. jak to mají oni na webu) pod dané pole. Zbytek stejný jako v 1. variantě.
V budoucnu by to šlo ještě vylepšit o mapu, nejbližší pobočku (kdyby chodily souřadnice o pobočkách nebo podle adresy zjistit přes google API souřadnice).. apod. Ale do toho se vám určitě chtít nebude
Navíc komerční využití google map stojí 9 tis. EUR ročně, ale vím jen o málokom, kdo to platí.
http://sluzby.heureka.cz/napoveda/xml-feed/#DELIVERY_DATE
V současné chvíli, když není produkt skladem, tak se DELIVERY_DATE
ve feedu nezobrazuje.
Citace z manuálu: Toto označení se využívá pouze pro případy, kdy je produkt nově uveden na trh a je prodejný až od určitého data, za předpokladu, že lze učinit předobjednávky. V případě, že jsou produkty dlouhodobě nedostupné a není známa ani přibližná doba dodání, pak nesmí být tyto produkty v XML souboru uváděny.
Takže by tam mělo být asi DELIVERY_DATE
uvedeno, ale s prázdnou hodnotou?
A produkty, které už nebudou skladem (ale majitel eshopu je nechává na webu kvůli SEO a návštěvnosti) by se asi vůbec neměly ve feedu zobrazovat?
Nápady? Nemáte s tím někdo zkušenosti?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.