TransWikia.com

woocomerce фильтрация по цене

Stack Overflow на русском Asked on January 24, 2021

Подскажите, могу ли я с помощью этого метода достать товары из базы по диапазону цен wc_get_products().например от 1000 до 2000. Если да, то как передать диапазон?

2 Answers

с помощью этого метода не получится выбрать товары по мета полю, потому что это поле формируется в другом месте и оно не обращает внимание на аргумент meta_query переданный в функцию wp_get_products. вам нужно использовать WP_Query или get_posts для получения товаров, например так

$products = get_posts(
    [
        'posts_per_page'  => -1,
        'post_status' => 'publish',
        'post_type' => 'product',
        'fields' => 'ids',
        'meta_query' => [
            [
                'key'     => '_price',
                'value'   => [ 1000, 2000 ],
                'compare' => 'BETWEEN',
                'type'=> 'DECIMAL(10,' . wc_get_price_decimals() . ')'
            ]
        ]
    ]
);

foreach ( $products as $product_id ) {
    $product = wc_get_product( $product_id );
    echo "{$product->get_price()}<br>";
}

Answered by Darth KYL on January 24, 2021

Можно получить через WP_Query

$args = array(
    'post_status' => 'publish',
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_query' => array(
        array(
            'key' => '_price',
            'value' => array(1000, 2000),
            'compare' => 'BETWEEN',
            'type' => 'NUMERIC'
        )
    )
);

$the_query = new WP_Query($args);

if ($the_query->have_posts()) :

      while ( $the_query->have_posts() ) : $the_query->the_post();

         $product_id = $the_query->post->ID; 

         $product = wc_get_product( $product_id); 
          
      endwhile;    

endif; 

Answered by Valerii Vasiliev on January 24, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP