WooCommerce – vlastní řazení produktu

Úvodní stránka Fórum podpory WordPressu Pluginy (funkčnost webu) WooCommerce – vlastní řazení produktu

Štítky: ,

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ů.

Aktuálně je na stránce zobrazeno 13 příspěvků - 1. až 13. (z celkem 13)
  • Autor
    Příspěvky
  • #6721

    Karlinho
    Participant
    Web

    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.

    #18030

    Musilda
    Participant
    Web

    Divné, 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.

    #18031

    admin
    Keymaster
    Web

    Zají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…

    #18032

    Musilda
    Participant
    Web

    Ten tvůj kód má jednu podstatnou chybu … chvíle napětí…

    Na řádcích 34 a 35 definuješ řazení dle velikost_1 a velikost_2.
    No a ve switchi máš case velikost1 a velikost2.

    Někam zmizelo podtržítko. Alespoň jsem si vyzkoušel úpravu řazení :D

    #18033

    admin
    Keymaster
    Web

    Musilda: Dobrý postřeh :-) Díky!

    #18034

    Karlinho
    Participant
    Web

    Tak 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?

    #18035

    admin
    Keymaster
    Web

    Karlinho: 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…

    #18036

    admin
    Keymaster
    Web

    Tak 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…

    #18037

    Karlinho
    Participant
    Web

    Funguje :)

    #24120

    bimbo
    Participant

    Zdravím, potřeboval bych pomoci také s naastavením řazení produktů. Byl by někdo ochotný mi pomoci ? :) Předem moc děkuji :)

    #24122

    admin
    Keymaster
    Web

    @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…

    #24123

    bimbo
    Participant

    Jdu na to, děkuji ;)

    #24128

    admin
    Keymaster
    Web

    Pokračování zde.

Aktuálně je na stránce zobrazeno 13 příspěvků - 1. až 13. (z celkem 13)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti