Per creare un nuovo metodo di ordinamento, suddividiamo il processo in due parti:
- Etichettatura del nuovo metodo
- Creazione dell’algoritmo
Nel primo caso basta usare i due filtri:
add_filter( 'woocommerce_default_catalog_orderby_options', 'function_1'); add_filter( 'woocommerce_catalog_orderby', 'function_1' );
dove function_1 ha come unico parametri $sortby che contiene i precedenti metodi di ordinamento.
function function_1 ( $sortby ) {
$sortby['departure'] = 'Data di partenza più vicina';
return $sortby;
}
Nella seconda fase invece andiamo a stilare il vero e proprio algoritmo di ordinamento. Usiamo il filtro:
add_filter( 'woocommerce_get_catalog_ordering_args', 'function_1_args');
La logica dell’algoritmo va all’interno della funzione, che ha un solo parametro $sort_args che contiene gli algoritmi già esistenti
function function_1_args( $sort_args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
$today = date("Ymd");
if ( 'departure' == $orderby_value ) {
$sort_args = array (
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_key' => 'pacchetto_turistico_data_partenza'
);
}
return $sort_args;
}