Исключить категорию товара из цикла в Woocommerce - PullRequest
0 голосов
/ 31 августа 2018

Я бы хотел исключить категорию моего текущего сообщения из цикла. Обычно довольно легко, на этот раз это не работает, и я не могу понять, что здесь не так.

Вот код моей страницы:

$postid = get_the_ID(); // curret product ID

<section class="related products">

            <?php
            $args = array(
            'post__not_in'          => array($postid), // Exclude displayed product
            'post_type'             => 'product',
            'post_status'           => 'publish',
            'posts_per_page'        => '6',
            'cat'                   => '-33' // Exclude cat


        );

    $related_products = new WP_Query($args);

    ?>  


    <h2><?php esc_html_e( 'Related products' ); ?></h2>



           <div class="owl-carousel rigid-owl-carousel" >


                    <?php if( $related_products->have_posts() ) {

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


                    wc_get_template_part( 'content', 'product' ); 


                     endwhile; }



                    ?>



</section>

Конец страницы

 <?php 

wp_reset_postdata();

 ?>

Показывает все продукты (кроме отображаемого, что является правильным).

Есть ли у вас какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Попробуйте ввести следующие дополнительные tax_query, поскольку категории продуктов являются пользовательской таксономией:

<?php
$related_products = new WP_Query( array(
    'post__not_in'          => array( get_the_ID() ), // Exclude displayed product
    'post_type'             => 'product',
    'post_status'           => 'publish',
    'posts_per_page'        => '6',
    'tax_query' => array( array(
        'taxonomy' => 'product_cat',
        'field' => 'id',
        'terms' => array( 33 ), // HERE the product category to exclude
        'operator' => 'NOT IN',
    ) ),
) );

if( $related_products->have_posts() ) : ?>

<h2><?php esc_html_e( 'Related products' ); ?></h2>
<div class="owl-carousel rigid-owl-carousel" >
<?php 
while( $related_products->have_posts() ) : $related_products->the_post(); 
    wc_get_template_part( 'content', 'product' ); 
endwhile;
wp_reset_postdata();
?>
</div>
<?php endif; ?>
0 голосов
/ 31 августа 2018

Вы можете получить категорию текущего сообщения, используя get_the_category и вы можете исключить категории, используя category__not_in в качестве аргумента. Таким образом, ваш аргумент должен быть как ниже

    $args = array(
        'post__not_in'          => array($postid), // Exclude displayed product
        'post_type'             => 'product',
        'post_status'           => 'publish',
        'posts_per_page'        => '6',
        'category__not_in'      => get_the_category(get_the_ID())//exclude category of current post
    );

Попробуйте, а затем дайте мне знать результат. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...