Woocommerce自定义属性作为价格范围的值

时间:2017-04-06 20:25:20

标签: php wordpress woocommerce

尝试修改现有的woocommerce价格滑块,以便按自定义属性值进行排序,而不是按价格进行排序,但坚持修改sql查询。

以下是sql标准woocommerce价格查询的一部分,但经过修改以获取一个自定义属性范围:

true

任何人都可以帮忙或建议另一种方式来显示此滑块?提前谢谢

1 个答案:

答案 0 :(得分:0)

找到解决方案:

    $meta_query = new WP_Meta_Query( $meta_query );
    $tax_query  = new WP_Tax_Query( $tax_query );
    $meta_query_sql = $meta_query->get_sql( 'post', $wpdb->posts, 'ID' );
    $tax_query_sql  = $tax_query->get_sql( $wpdb->posts, 'ID' );

    $sql  = "SELECT min( FLOOR( post_meta.meta_value ) ) as min_attr, max( CEILING( post_meta.meta_value ) ) as max_attr FROM {$wpdb->posts} ";
    $sql .= " LEFT JOIN {$wpdb->postmeta} as post_meta ON {$wpdb->posts}.ID = post_meta.post_id " . $tax_query_sql['join'] . $meta_query_sql['join'];
    $sql .= "   WHERE {$wpdb->posts}.post_type IN ('" . implode( "','", array_map( 'esc_sql', apply_filters( 'woocommerce_price_filter_post_type', array( 'product' ) ) ) ) . "')
                AND {$wpdb->posts}.post_status = 'publish'
                AND post_meta.meta_key IN ('" . implode( "','", array_map( 'esc_sql', apply_filters( 'woocommerce_price_filter_meta_keys', array( '_prod_sort_wcpaaf_sort' ) ) ) ) . "')
                AND post_meta.meta_value > '' ";
    $sql .= $tax_query_sql['where'] . $meta_query_sql['where'];
    return $wpdb->get_row( $sql );

将其留给任何发现有用的人。旁注 - 请不要忘记分类法查询,并在 _prod_sort_wcpaaf_sort 上面的代码中更改用于项目中的另一个元密钥的字符串。