Plugin pro sledování konverzí ve Woocommerce
WooCommerce sledování zásilek plugin

Katalog zboží pomocí Woocommerce






Jak upravit breadcrumbs ve Woocommerce
Změna textu "Home" na začátku navigace na "Úvod"
add_filter( 'woocommerce_breadcrumb_defaults', 'jk_change_breadcrumb_home_text' );
function jk_change_breadcrumb_home_text( $defaults ) {
$defaults['home'] = 'Úvod';
return $defaults;
}
Změna separatoru v breadcrumbs
add_filter( 'woocommerce_breadcrumb_defaults', 'jk_change_breadcrumb_delimiter' );
function jk_change_breadcrumb_delimiter( $defaults ) {
$defaults['delimiter'] = ' > ';
return $defaults;
}
Samozřejmě záleží na vás, jaký znak použijete.
Změna odkazu "Home" na linou url
add_filter( 'woocommerce_breadcrumb_home_url', 'woo_custom_breadrumb_home_url' );
function woo_custom_breadrumb_home_url() {
return 'http://example.cz';
}
Odstranění drobečkové navigace
add_action( 'init', 'jk_remove_wc_breadcrumbs' );
function jk_remove_wc_breadcrumbs() {
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
}
Celková změna drobečkové navigace
Pokud potřebujete upravit drobečkovou navigaci poněkud více, nemá smysl používat jednotlivé funkce, ale upravit rovnou celé pole s nastavením:
add_filter( 'woocommerce_breadcrumb_defaults', 'jk_woocommerce_breadcrumbs' );
function jk_woocommerce_breadcrumbs() {
return array(
'delimiter' => ' / ',
'wrap_before' => '',
'before' => '',
'after' => '',
'home' => _x( 'Home', 'breadcrumb', 'woocommerce' ),
);
}
Položky before a after jsem zatím nezkoušel, ale mělo by jít o kód, který se zobrazí před a za textem každého odkazu.
Všechny funkce jsou z oficiálních stránek Woothemes.com
Endpoints vs shortcodes ve Woocommerce 2.1+

Proč byly shortcody nahrazeny?
Vývojáři to zdůvodňují tím, že Wordpress a Woocommerce používá řada méně technicky zdatných osob a původní postup vytváření stránek a vkládání shortcodů, byl zdrojem celé řady problémů. Takto si můžete jednoduše upravit url jednotlivých podstránek.Zásilkovna Woocommerce plugin



Jak změnit řazení výpisu produktů ve Woocommerce
/**
* This code should be added to functions.php of your theme
**/
add_filter('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');
function custom_default_catalog_orderby() {
return 'date'; // Can also use title and price
}
Woocommerce aplikace pro iPhone



Správa několika obchodů najednou
Co je naprosto super, je, že aplikace umožňuje propojit aplikaci se čtyřmi obchody a můžete je tak spravovat přímo ze svého mobilu. Samozřejmě, že vývojáři nechtěli omezit aplikaci pouze na čtyři obchody, ale bohužel, při propojení s větším množství, se aplikace strašně zpomalovala.
A co Android?
Tak teď vás nepotěším. V plánu mají vývojáři vylepšit propojení s REST API, které by mělo vyřešit omezení na čtyři obchody a přestože podle vyjádření Beky Rice na verzi pro Android pracují, není zatím určen žádný termín, ani to není jejich priorita. Aplikace pro iOS je dle mého názoru krok správným směrem a podpora vývoje přímo od Woothemes pomůže systému posunout se zase o pěkný krok kupředu.Woocommerce a zbožové porovnávače
XML feed
Každý zbožový porovnávač má naprogramované rozhraní, které přijímá strukturovaný xml soubor. Na svém eshopu tedy umístíte xml soubor se všemi produkty a údaji o nich, porovnávač jej načte, a pokud je xml soubor v pořádku (pro potřeby článku jej budeme označovat jako feed), uloží informace o zboží ve vašem eshopu v databázi a zobrazuje je ve výsledcích porovnání.Plugin pro generování XML souboru
Pokud chcete generovat xml feed pro porovnávače, nemáte jinou možnost, než využít plugin. Sám jsem hledal již hotové řešení, ale nalezl jsem pouze dvě a ani jedno mi nevyhovovalo. Z toho důvodu jsem začal vyvíjet vlastní řešení, které bylo nyní konečně dokončeno a jehož funkce vám v tomto článku představím. Nejprve se jednalo o plugin pouze pro Heuréku CZ, nakonec byl do pluginu přidán i feed pro Heuréku SK, Zboží.cz a Srovname.cz. V dalších verzích budu přidávat i další srovnávače, ale ne za každou cenu, jen ty, které mají smysl.Co plugin obsahuje?
Globální nastavení
V základním nastavení, které je pro všechny srovnávače stejné, je možnost zadat výrobce (manufakturer), dodací lhůtu ve dnech a typ zboží, zda se tedy jedná o nové, či bazarové. Toto nastavení je pro všechny produkty a srovnávače stejné.
Nastavení pro Heuréku
Globální nastavení pro Heuréku obsahuje CPC, tedy cenu za proklik, pro všechny produky, dále nastavení dopravy, kde jsou k dispozici druhy dopravy, dle specifikace od Heuréky. Vyberete tedy způsob dopravy, který máte na eshopu, zadáte cenu za dopravu a nemusíte mít obavu, že se jedná o neplatné zadání dopravy. Dále máte možnost nastavit kategorie. Heuréka má pro kategorie produktů vlastní xml soubor, z kterého plugin čerpá a pokud chcete mít jistotu, aby se vám produkty spárovali, přiřadíte kategorii vašeho eshopu, odpovídající kategorii z Heuréky. Každé pole pro výběr z kategorií Heuréky, má vlastní vyhledávání, takže nemusíte mít obavu, z úmorného nastavování. Navíc, máte možnost vyloučit z XML feed jednotlivé kategorie. Pokud máte v eshopu kategorie - typicky, třeba bazarový prodej, nemusíte chtít, aby se na Heuréku odesílaly produkty z této kategorie. Zaškrtnutím, kategorii z feedu vyloučíte. Platí pro všechny produkty v kategorii. Poslední možnost, je nastavení CPC, tedy ceny za proklik, pro konkrétní kategorii. Ocení všichni, kdo optimalizují CPC na Heuréce.
Globální nastavení Zboží.cz
Nastavení feedu pro zboží je podobné jako pro Heuréku, ale protože Zboží nemá, nebo jsem jej nenalezl, xml soubor s kateogriemi, musí se kategorie Zboží.cz zadat ručně. Stejně jako u Heuréky můžete kategorii vyloučit z XML feedu a zadat jí konkrétní CPC. Na rozdíl od CPC u Heuréky, je u Zboží pojmenována tato položka MAX_CPC. Dalším rozdílem je možnost nastavit, zda se jedná o upřednostněnou nabídku, či ne. Pozor! - feed pro Zboží má oproti Heuréce odlišnosti, takže je nutné pro něj nastavit hodnoty zvlášť. Především varianty produktů se generují jinak a feed z Heuréky vám nemusí fungovat správně.
Globální nastavení Srovnáme.cz
Srovnáme.cz má v podstatě identický feed, jako Heuréka, kromě několika drobností v názvech tagů, proto u Srovnáme.cz je nastavení získáváno z nastavení Heuréky. Jediné, co pro Srovnáme.cz můžete nastavit, je cena za proklik u jednotlivých kategorií eshopu, zde je nazvaná TOLL.
To by mohlo stačit
To v žádném případě. V tuto chvíli máme nastaveny hodnoty, které jsou společné pro všechny produkty v eshopu, ale co když budeme, kvůli lepším výsledkům potřebovat upravovat jednotlivé produkty?Nastavení jednotlivých produktů
Pokud se podíváte do specifikace jednotlivých feedů, zjistíte, že ke každému produktu je potřeba připojit ještě další informace. Obrázek se získává z náhledového obrázku, název produktu a popis z titulku a popisu produktu. Ale dat je potřeba daleko více. V detailu produktu můžete najít box, s názvem Data produktu. Vypadá takto:
- Název produktu - nemusí vám vyhovovat, jak působí ten originální.
- EAN - můžete zadat EAN kód pro produkt
- ISBN - můžete zadat ISBN kód
- Výrobce - můžete upravit výrobce, pro konkrétní produkt





A to mám pokaždé otevírat detail produktu?
Ano, ale ne vždy. Protože procházení jednotlivých detailů produktů, může být úmorné, je v rychlé úpravě produktu přidána možnost změnit název produktu, výrobce a dobu doručení. Rychlá úprava, je okno, které se vám zobrazí ve výpisu produktů, po kliknutí na odkaz - Quick edit.
A co varianty produktů?
Varianty produktů, jsou bolavým místem xml feedů, protože některé pluginy načítají produkty z RSS feedu a ten varianty produktů neobsahuje. Navíc je potřeba vypisovat varianty produktů jinak pro Heuréku a jinak pro Zboží. Plugin, který vám představuji, vypisuje všechny varianty produktů a váš feed tak bude obsahovat kompletní nabídku vašeho zboží. Woocommerce má však jednu nepříjemnou vlastnost, název varianty vypadá například takto: Variation #517 of Woo Logo. Jako název do srovnávače zboží nepoužitelné. Stačí však vybrat některou z variant:

Globální nastavení, detail produktu a nastavení variant produktu - ještě něco?
Na závěr jsem si nechal součást pluginu, která jako taková přímo s generováním xml feedu produktů nesouvisí, ale pro korektní propojení s Heurékou se jedná o důležitý prvek. Heuréka totiž umožňuje vytvoření takzvaného dostupnostního feedu, jenž definuje, do kdy zákazník obdrží zboží, pokud jej objedná do určité hodiny. U produktu je pak zobrazeno - pokud objednáte do 15:00, obdržíte zboží nejpozději do tří dnů. Pro správné fungování dostupnostního feedu musíte zadat deadline, tedy hodinu, do které je možné ten den objednat a počet dnů, pro doručení zboží. Dostupnostní feed můžete nastavit buď globálně, nebo u každého produktu zvlášť.

Jak mohu plugin získat?
Protože se jedná o plugin placený, musíte si jej zakoupit. Stránky, kde bude možné plugin zaplatit a stáhnout, jsou ve vývoji, proto, pokud nechcete čekat, můžete mi napsat na musilekv@seznam.cz Cena za plugin: 2 500 Kč.Socute free šablona pro Woocommerce
Co obsahuje prémiová verze:
- Free podporu
- Video návody
- Rozšířené Theme option
- Sample data
- 5 druhů sliderů
- Neomezený počet barev
- Porovnání produktů
- List a Grid výpis produktů
- Poptávkový formulář u produktu
- Vícekroková pokladna
- 600 Google fonts
- Neomezený počet kontaktních formulářů
- 4 portfolio layouts
- Galerie a videogalerie
- Shortcode manager
- Speciální widgety

Zobrazení celkové váhy ve výpisu objednávek Woocommerce

add_action('woocommerce_checkout_update_order_meta', 'woo_add_cart_weight');
function woo_add_cart_weight( $order_id ) {
global $woocommerce;
$weight = $woocommerce->cart->cart_contents_weight;
update_post_meta( $order_id, '_cart_weight', $weight );
}
Tím získáme celkovou váhu objednávky, kterou pak zobrazíme pomocí následujícího kódu
add_filter( 'manage_edit-shop_order_columns', 'woo_order_weight_column', 20 );
function woo_order_weight_column( $columns ) {
$offset = 8;
$updated_columns = array_slice( $columns, 0, $offset, true) +
array( 'total_weight' => esc_html__( 'Weight', 'woocommerce' ) ) +
array_slice($columns, $offset, NULL, true);
return $updated_columns;
}
add_action( 'manage_shop_order_posts_custom_column', 'woo_custom_order_weight_column', 2 );
function woo_custom_order_weight_column( $column ) {
global $post;
if ( $column == 'total_weight' ) {
$weight = get_post_meta( $post->ID, '_cart_weight', true );
if ( $weight > 0 )
print $weight . ' ' . esc_attr( get_option('woocommerce_weight_unit' ) );
else print 'N/A';
}
}
Nano Shop Free Woocommerce šablona

- Podporu Woocommerce
- Responsivitu
- Import demo dat na jedno kliknutí
- Podporu překladů - lokalizace
- Theme option panel
- Responsivní slider
- Retina ready
- Boxed a fullwidth design

Fitrování objednávek ve Woocommerce dle časového období
if(is_admin()){
}
Mezi složené závorky budeme psát celý kód.
Připravíme si funkci, která nám z vybraných dat upraví query dotaz.
function musilda_filter( $where = '' ) {
global $wpdb;
if( isset( $_REQUEST['start_date'] ) && !empty( $_REQUEST['start_date'] ) ){
$start_date=$_REQUEST['start_date'];
$where .= " AND post_date >='$start_date' ";
}
if( isset( $_REQUEST['end_date'] ) && !empty( $_REQUEST['end_date'] ) ){
$end_date=$_REQUEST['end_date'];
$where .=" AND post_date <='$end_date' ";
}
return $where;
}
Dalším krokem bude přidání where do query. K tomu použijeme pre_get_posts a post_where:
add_filter('pre_get_posts', 'wp_musilda_admin_filters');
function wp_musilda_admin_filters($query) {
global $pagenow;
if( $query->is_admin && ( 'edit.php' == $pagenow ) ) {
if(isset($_REQUEST['start_date'])||isset($_REQUEST['end_date'])){
add_filter( 'posts_where', 'musilda_filter' );
}
}
return $query;
}
Protože budeme chtít použít jQuery datepicker, musíme přidat script:
add_action( 'admin_enqueue_scripts', 'enqueue_admin_scripts' );
function enqueue_admin_scripts() {
global $post;
if ( !empty( $post->post_type )
&& $post->post_type == 'shop_order' ){
wp_enqueue_script( 'jquery-ui-datepicker' );
}
}
Kontrola toho, zda se jedná o shop_order je v tomto případě na místě, protože by jsme měli vkládat scripty, jen když je potřebujeme.
Jako poslední zobrazíme pole pro výběr datumů a funkčnost máme hotovou
add_action('restrict_manage_posts', 'wp_musilda_filters_dropdowns',2);
function wp_musilda_filters_dropdowns() {
global $post;
if ( !empty( $post->post_type )
&& $post->post_type == 'shop_order' ){
global $wpdb;
if( isset( $_REQUEST['start_date'] )
&& isset( $_REQUEST['end_date'] ) ){
$start_date = $_REQUEST['start_date'];
$end_date = $_REQUEST['end_date'];
}else{
$start_date = '';
$end_date = '';
}
global $post;
?>;
Filtrování před:
Filtrování po:
Pokud budete chtít použít jiný datepicker, stačí změnit použitý script. V případě, že budete chtít stejnou filtraci i u ostatních druhů obsahu, stačí zrušit kontrolu post_type.
Nefunkční custom order status ve WooCommerce
V říjnu byla vydána aktualizace WooCommerce, která v sobě měla jednu nepříjemnou změnu a to odlišný přístup k definování statusu objednávky. Bohužel je tato změna zpětně nekompatibilní a řada funkcí, nebo pluginů, které toto v sobě mají, může být nefunkční.
Na to, že tvůrci pluginů budou hned upravovat své produkty se nemůžete spolehnout, viz. tady . Náprava naštěstí není složitá, i když mi to chvíli zabralo, než jsem na to přišel.
Původní vytvoření custom order status byl ve vytvoření nového termu. V podstatě stačilo použít tuto funkci
function add_custom_status(){ $term = get_term_by( 'name', 'Custom status', 'shop_order_status' ); if ( ! $term ) { wp_insert_term( 'Custom status', 'shop_order_status' ); } } |
V polovině září se však použití termu změnilo na status postu. Objednávky ve WooCommerce jsou vlastně custom post type a jsou tak ukládány do tabulky wp_posts (wp_ dle aktuálního prefixu). A stavy objednávek tak byly taxonomie pro custom post type.
V rámci zjednodušení přístupu ke stavům, se vývojáři rozhodli vytvořit custom post statusy, které budou mít prefix wc. Takže objednávka ve stavu čekající, má v nyní post status wc-pending. A v tom je zakopaný pes.
Custom order status ve WooCommerce nově vytvoříte takto
add_action( 'init', 'register_custom_order_status', 5 ); function register_custom_order_status(){ register_post_status( 'wc-control', array( 'label' => _x( 'Custom status', 'Order status', 'woocommerce' ), 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop( 'Control order <span class="count">(%s)</span>', 'Control order <span class="count">(%s)</span>', 'woocommerce' ) ) ); } |
Samozřejmě všude, kde programátoři použili pro výpis objednávek s vlastním statusem, je potřeba upravit funkce, aby místo termu používaly post_status.
Doufám, že vám tip pomůže, protože na webu jsou nyní dohledatelné spíše starší návody.
Uložení custom fields k objednávce ve WooCommerce
Pokud potřebujete uložit společně s objednávkou vlastní data, pomůže vám následují snippet. Pomocí něj uložíte custom field pro aktuálně vytvořenou objednávku. Funkce řeší pouze uložení, ne jak data získáte a jak jej zobrazíte v administraci.
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' ); function my_custom_checkout_field_update_order_meta( $order_id ) { if ( ! empty( $_POST['my_field_name'] ) ) { update_post_meta( $order_id, 'My Field', sanitize_text_field( $_POST['my_field_name'] ) ); } } |
WooCommerce Datum doručení
Plugin WooCommerce Datum doručení, umožňuje vytvořit vlastní termíny doručení, pokud produkt není skladem.
Díky tomu váš zákazník uvidí místo strohého „Skladem“ například „Dodání do týdne“. WooCommerce totiž umožňuje nastavit pro produkty, jenž skladem nejsou, možnost objednat je i bez nutnosti upozornění zákazníka.
Klienti jsou tak často roztrpčeni, protože skutečná doba dodání se liší od jejich očekávání.
Video s ukázkou nastavení pluginu
Plugin můžete získat na Toret.cz za 200 Kč.
Odstranění slova zdarma z ceny produktu
Pokud využíváte WooCommerce, při nastavování cen za produkt, jste určitě zjistili, že pokud je produkt zdarma, místo ceny se zobrazí popisek „zdarma“. Jeho odstranění je jednoduché, díky hookům, kterými je celá WooCommerce doslova prošpikovaná.
Do functions.php stačí vložit tento snippet:
add_filter( 'woocommerce_variable_free_price_html', 'hide_free_price_notice' ); add_filter( 'woocommerce_free_price_html', 'hide_free_price_notice' ); add_filter( 'woocommerce_variation_free_price_html', 'hide_free_price_notice' ); function hide_free_price_notice( $price ) { return ''; } |
Pokud místo return “; napíšete například – return ‚Omezený počet kusů zdarma!'; bude to vypadat daleko lépe a můžete tak jednoduše vytvořit nějaký druh zákaznické akce.
Dvojité zobrazení platební metody po aktualizaci WooCommerce
Dnes to bude jen rychlý tip na opravu pokladny po aktualizaci Woocommerce. Pokud se vám toto stalo a autor šablony zatím nevydal aktualizaci, budete si muset upravit soubory šablony ručně.
Celý problém je v tom, že v nové verzi WooCommerce byl soubor order-rewiev.php rozdělen mezi další soubory a plugin nyní obsahuje nové dva soubory.
Konkrétně se jedná o payment.php a payment-method.php.
Pokud porovnáte nový order-review a starší soubor, zjistíte, že v novém chybí celá část tabulky, mezi tagy table body.
Stačí tuto část odstranit a platební metoda bude už jen pouze jedna.
Minimální cena objednávky ve WooCommerce
Pokud nabízíte v eshopu specifické zboží a chcete nákup podmínit minimální částkou, kterou je potřeba utratit, aby bylo vůbec možno nakoupit, bude se vám hodin následující snippet.
Opět, stejně jako v jiných případech, použijeme vestavěné akce, které má WooCommerce v hojném množství.
Tenotkrát to bude woocommerce_checkout_process a woocommerce_before_cart.
Do functions.php přidáme následující kód.
add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' ); add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' ); function wc_minimum_order_amount() { $minimum = 50; if ( WC()->cart->total < $minimum ) { if( is_cart() ) { wc_print_notice( sprintf( 'You must have an order with a minimum of %s to place your order, your current order total is %s.' , wc_price( $minimum ), wc_price( WC()->cart->total ) ), 'error' ); } else { wc_add_notice( sprintf( 'You must have an order with a minimum of %s to place your order, your current order total is %s.' , wc_price( $minimum ), wc_price( WC()->cart->total ) ), 'error' ); } } } |
Tento kód sleduje celkovou hodnotu objednávky, což znamená, že započítává i cenu dopravy.
Pokud chcete mít čistou hodnotu košíku, musíte změnit všechny zápisy WC()->cart->total na WC()->cart->subtotal
Hromadná správa skladu ve WooCommerce
Po delší době jsem natočil video s ukázkou pluginu, který umožňuje jednoduchou správu skladu ve WooCommerce, bez nutnosti rozklikávat každý produkt a dělat úpravy v detailu produktu.
Plugin je zdarma na WordPress.org – WooCommerce Stock Manager