Úvodní stránka › Fórum podpory WordPressu › Pluginy (funkčnost webu) › WooCommerce – vlastní řazení produktu
Štítky: Diamond, WooCommerce
Zvolené téma obsahuje celkem 12 odpovědí. Do diskuze (4 účastníci) se naposledy zapojil uživatel admin a poslední změna je stará 8 let, 8 měsíců.
-
AutorPříspěvky
-
11. března 2014 (23:18) #6721
Zdravím. Mám na WordPressu e-shop pomocí pluginu WooCommerce. Předpokládejme, že prodávám prsteny, u kterých je důležitá jedna vlastnost – velikost. Proto bych rád dal možnost seřadit produkty právě podle velikosti. Použitá šablona je Diamond.
Vytvořil jsem si tedy vlastnost velikost a tuto vlastnost přiřadil ke dvěma produktům, dejme tomu 50 a 60. Poté jsem si vyhledal kód pro vlastní řazení a upravil ho. Problém je v tom, že se po kliknutí nic nemění. Upravený kód:
/************* Add sorting by attributes **************/ /** * Defines the criteria for sorting with options defined in the method below */ add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args'); function custom_woocommerce_get_catalog_ordering_args( $args ) { global $wp_query; // Changed the $_SESSION to $_GET if (isset($_GET['orderby'])) { switch ($_GET['orderby']) : case 'velikost1' : $args['order'] = 'ASC'; $args['meta_key'] = 'velikost'; $args['orderby'] = 'meta_value_num'; break; case 'velikost2' : $args['order'] = 'DESC'; $args['meta_key'] = 'velikost'; $args['orderby'] = 'meta_value_num'; break; endswitch; } return $args; } /** * Adds the sorting options to dropdown list .. The logic/criteria is in the method above */ add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby'); function custom_woocommerce_catalog_orderby( $sortby ) { $sortby['velikost_1'] = 'Seřadit podle velikosti 1'; $sortby['velikost_2'] = 'Seřadit podle velikosti 2'; return $sortby; } /** * Save custom attributes as post's meta data as well so that we can use in sorting and searching */ add_action( 'save_post', 'save_woocommerce_attr_to_meta' ); function save_woocommerce_attr_to_meta( $post_id ) { // Get the attribute_names .. For each element get the index and the name of the attribute // Then use the index to get the corresponding submitted value from the attribute_values array. foreach( $_REQUEST['attribute_names'] as $index => $value ) { update_post_meta( $post_id, $value, $_REQUEST['attribute_values'][$index] ); } } /************ End of Sorting ***************************/
Snad někdo odhalí nějakou tu chybku v kódu :) Děkuji.
12. března 2014 (15:05) #18030Divné, vypadá to, že by to mělo fungovat. V návodu od Woothemes je použit ještě jeden filter, ale to by snad nemělo mít vliv.
12. března 2014 (20:06) #18031Zajímavé, patrně jste používal následující návod, nemohlo se s novými verzemi pluginu WooCommerce něco změnit? Některé nedávné komentáře tam naznačují problémy…
Nemusí se ta nová vlastnost ještě nějak registrovat v šabloně? Aby se dostala jako parametr do URL? Šablona Diamond vypadá vcelku dobře, ale na nějaké výchozí šabloně to také nefunguje? Bohužel to asi nepůjde moc vyzkoušet bez přístupu k placené šabloně a nechce se mi zatím instalovat plugin a připravovat nějaké produkty pro testování, ale můžete poslat emailem přihlašovací údaje na nějakou testovací verzi webu, zkusím se na to podívat (raději předem zazálohovat)…
Musilda: Myslíš chybějící filtr
woocommerce_default_catalog_orderby_options
(viz manuál)? Ten by to podle mě také neměl způsobovat…13. března 2014 (5:28) #18032Ten tvůj kód má jednu podstatnou chybu … chvíle napětí…
Na řádcích 34 a 35 definuješ řazení dle
velikost_1
avelikost_2
.
No a ve switchi máš casevelikost1
avelikost2
.Někam zmizelo podtržítko. Alespoň jsem si vyzkoušel úpravu řazení :D
13. března 2014 (8:47) #1803313. března 2014 (12:10) #18034Tak to je gól :D I proto jsem to sem dával… Když se na to člověk dívá delší dobu, tak je občas na takové chyby imunní :) Děkuji. Nicméně to teď píše Žádné zboží, které by odpovídalo Vašemu výběru, nebylo nalezeno.
Admine, můžu poprosit o email?
13. března 2014 (12:50) #18035Karlinho: Určitě, ale Musilda má s WooCommerce asi více zkušeností :-) Stačí použít email, ze kterého chodí notifikace z fóra, tedy pavelevap@separatista.net.
P.S. Nejsou vlastnosti uložené v databázi s jednou verzí proměnné než je pak uvedena ve zdrojovém kódu pro řazení? Zkuste sjednotit kód na druhou variantu…
24. března 2014 (17:35) #18036Tak nakonec byla záměna proměnných pouze jednou částí problému :-)
Další finta spočívala v tom, že byl používán nesprávný meta_key.
Tak už to asi mám,
$args['meta_key']
totiž nebude “velikost”, ale “pa_velikost” (předponu pa_ si tam patrně přidává WooCommerce, zkratka Product Attribute). A když změníte/doplníte Vlastnost pro “Velikost”, tak je potřeba aktualizovat celý produkt (a ne jen přidat hodnotu pro “Velikost”).Podle nejnovějších zpráv by to už mělo fungovat…
24. března 2014 (18:03) #180374. srpna 2015 (11:04) #24120Zdravím, potřeboval bych pomoci také s naastavením řazení produktů. Byl by někdo ochotný mi pomoci ? :) Předem moc děkuji :)
4. srpna 2015 (11:09) #24122@bimbo: Od toho tady to fórum je :-) Někdy se odpověď objeví hned, někdy je potřeba mít trpělivost (zejména u složitějších dotazů). Ale založil bych asi nové téma a popsal tam celý problém…
4. srpna 2015 (11:14) #24123Jdu na to, děkuji ;)
4. srpna 2015 (12:03) #24128 -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.