Я хочу создать фильтр ценового диапазона для своих продуктов в 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' ) );