我正在尝试为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 );