Как я могу запросить продукт WooCommerce по цене продукта $ 00? - PullRequest
0 голосов
/ 12 июля 2020

У меня есть собственный запрос в моем шаблоне, я хочу показать продукт по цене, я хочу запрашивать бесплатные продукты и показывать только продукты за $ 0 на моей домашней странице.

Ответы [ 2 ]

1 голос
/ 12 июля 2020
$args = array(
            'post_type'      => 'product',
            'numberposts'      => -1,
            'meta_query'     => array(
                'relation' => 'OR',
                array(
                    'key'           => '_regular_price',
                    'compare' => 'NOT EXISTS'
                ),
                array( 
                    'key'           => '_price',
                    'compare' => 'NOT EXISTS'
                    
                ),
                array( 
                    'key'           => '_regular_price',
                    'compare' => '=',
                    'value' => 0,
                ),
                array( 
                    'key'           => '_price',
                    'compare' => '=',
                    'value' => 0,
                )
            )
        );
        
        $products =  get_posts( $args );
1 голос
/ 12 июля 2020

Добавьте это в свою тему functions. php и дайте мне знать, работает ли оно.

add_action( 'woocommerce_product_query', 'zero_price_products' );
function zero_price_products( $q ){
    $meta_query = $q->get( 'meta_query' );
        $meta_query[] = array(
        'key'       => '_price',
        'value'     => 0,
        'compare'   => '='
    );
    $q->set( 'meta_query', $meta_query );
}

Если вы хотите отображать товары на своей домашней странице, добавьте этот код:

<?php
$args = array(
    'post_type' => 'product',
    'posts_per_page' => 8,
    'post_status' => 'publish',
    'orderby' => 'id',
    'order' => 'DESC',
    'meta_query' => array(
           array(
           'key'       => '_price',
           'compare'   => '=',
           'value'      => 0,
           )
        ),
);


$custom_posts = new WP_Query( $args );

if ($custom_posts->have_posts() ) : while ($custom_posts->have_posts() ) : $custom_posts->the_post(); ?>
    <?php
        wc_get_template_part( 'content', 'product' );
     ?>
<?php endwhile; endif; ?>
...