WordPress更便宜的查询,用于获取所有价格值

时间:2019-04-17 08:11:11

标签: mysql wordpress woocommerce

我想为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' ) );

0 个答案:

没有答案