Per prima cosa impariamo a “giocare” un pò con qualche hook di WooCommerce, di preciso un filtro (woocommerce_catalog_orderby), che ci permette di apportare delle modifiche al menu ordinamento prodotti.
Come rimuovere la voce “Ordinamento predefinito” nel filtro prodotti di WooCommerce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
add_filter( 'woocommerce_catalog_orderby', 'aa_remove_default_sorting_options' ); function aa_remove_default_sorting_options( $options ){ //unset( $options[ 'popularity' ] ); unset( $options[ 'menu_order' ] ); //unset( $options[ 'rating' ] ); //unset( $options[ 'date' ] ); //unset( $options[ 'price' ] ); //unset( $options[ 'price-desc' ] ); return $options; } |
Togliendo il commento dalle altre voci, possiamo eliminare anche le altre opzioni presenti nella select
Giusto per chiarezza le opzioni modificabili / rimovibili sono :
popularity : Popolarità
menu_order : Ordinamento predefinito
rating : Valutazione media
date : Ordina in base al più recente
price : Prezzo: dal più economico
price-desc : Prezzo: dal più caro
Come rinominare una voce del filtro prodotti di WooCommerce
Con il medesimo filtro adniamo a scrivere questa funzione PHP
1 2 3 4 5 6 7 8 9 |
add_filter( 'woocommerce_catalog_orderby', 'aa_rename_default_sorting_options' ); function aa_rename_default_sorting_options( $options ){ $options[ 'menu_order' ] = 'Ordinamento di default'; // rename return $options; } |
Come cambiare l’ordine delle voci del filtro prodotti WooCommerce
Allo stesso modo e con il medesimo hook, andiamo a ridefinire l’ordinamento delle voci del menu, il modo più semplice è quello di riscrivere l’array, quindi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
add_filter( 'woocommerce_catalog_orderby', 'aa_change_sorting_options_order', 5 ); function aa_change_sorting_options_order( $options ){ $options = array( 'menu_order' => __( 'Default sorting', 'woocommerce' ), 'price' => __( 'Sort by price: low to high', 'woocommerce' ), 'rating' => 'Sort by average rating', // __() is not necessary 'price-desc' => __( 'Sort by price: high to low', 'woocommerce' ), 'date' => __( 'Sort by latest', 'woocommerce' ), 'popularity' => __( 'Sort by popularity', 'woocommerce' ), ); return $options; } |
Perchè non l’ho scritto in italiano ? Perchè lascio che sia WooCommerce a tradurlo per me, infatti gli sto passando il textdomain (‘woocommerce’)
Come aggiungere una nuova voce o un campo meta nel filtro dei prodotti WooCommerce
Per prima cosa dobbiamo conoscere il meta del prodotto da inserire nel filtro; nel mio caso ho precedentemente creato un plugin per un cliente che vende libri online e che aveva bisogno di avere dei campi aggiuntivi tipo ISBN; autore del libro , ecc.
Quindi utilizzerò il campo “autore” che è stato definito come product meta nel plugin che ho sviluppato prima.
Quindi, aggiungo la voce in questo modo :
1 2 3 4 5 6 7 8 9 |
add_filter( 'woocommerce_catalog_orderby', 'aa_add_custom_sorting_options' ); function aa_add_custom_sorting_options( $options ){ $options['author'] = 'Ordina per autore'; return $options; } |
Questa funzione mi fa apparire la voce nel menu, però se ci clicco non succede nulla, devo utilizzare un altro filtro (woocommerce_get_catalog_ordering_args) e passargli gli argomenti.
1 2 3 4 5 6 7 8 9 10 11 12 |
add_filter( 'woocommerce_get_catalog_ordering_args', 'aa_custom_product_sorting' ); function aa_custom_product_sorting( $args ) { if( isset( $_GET['orderby'] ) && 'author' === $_GET['orderby'] ) { $args['meta_key'] = 'autore'; $args['orderby'] = array( 'meta_value' => 'ASC' ); } return $args; } |
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
ne hai fatto un post 🙂
🙂