Я пытаюсь создать пользовательский фильтр для измерений товаров на странице продуктов Woocommerce. Я не могу найти способ сделать любую математику, чтобы выполнить фильтрацию на основе размеров пола (ширина * длина).
function woocommerce_catalog_orderby( $orderby ) {
$orderby['heaviest'] = __( 'Heaviest first', 'woocommerce' );
$orderby['lightest'] = __( 'Lightest first', 'woocommerce' );
$orderby['biggest'] = __( 'Biggest first', 'woocommerce' );
return $orderby;
}
add_filter( "woocommerce_catalog_orderby", "woocommerce_catalog_orderby", 20 );
function woocommerce_get_catalog_ordering_args( $args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'heaviest' == $orderby_value ) {
$args['meta_key'] = '_weight';
$args['orderby'] = 'meta_value_num';
$args['order'] = 'DESC';
}
if ( 'lightest' == $orderby_value ) {
$args['meta_key'] = '_weight';
$args['orderby'] = 'meta_value_num';
$args['order'] = 'ASC';
}
if ( 'biggest' == $orderby_value ) {
$math='_length' * '_width';
$args['meta_key'] = $math;
$args['orderby'] = 'meta_value_num';
$args['order'] = 'DESC';
}
return $args;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'woocommerce_get_catalog_ordering_args', 20 );