我想为Woocommerce中的产品创建一个价格范围过滤器,我不知道什么是最好的方法。如我所见,有2个选项。
第一个选择是执行一个新的Wp_Query并获取数组中的所有元值。或者使用$ wpdb并直接从数据库获取值。
哪种解决方案最适合性能?还有其他选择吗?
第一个解决方案就是这样
$args = array(
'post_type' => 'product',
'posts_per_page' => -1
);
$products = new WP_Query($args);
$prices = array();
if($products->have_posts()):while($products->have_posts()):$products->the_post();
$price = get_post_meta(get_the_ID(), '_price', true);
$prices[] = $price;
endwhile;
endif;
第二个解决方案是这样的
global $wpdb;
$prices = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = '%s'
AND p.post_type = '%s'
", '_price', 'product' ) );