Woocommerce从WP_Query循环中删除隐藏的产品

时间:2018-07-09 13:41:37

标签: wordpress woocommerce

我有一个设置为“目录可见性”的WooCommerce产品:隐藏我想从WP_Query中排除这些类型的产品。我怎样才能做到这一点?这是我获取所有产品的代码

<?php 
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
    );

    $query = new WP_Query( $args ); 
?>

<?php if($query->have_posts()): ?>
    <ul>
        <?php while( $query->have_posts() ): $query->the_post(); ?>
            <?php $product = wc_get_product(get_the_ID());?>

            <li><a href="<?php the_permalink(); ?>"><?php echo $product->get_sku(); ?></a></li>
        <?php endwhile; ?>
    </ul>
<?php endif; ?>

3 个答案:

答案 0 :(得分:1)

也请检查以下内容: usgin pre_get_posts

答案 1 :(得分:0)

您可以使用元查询来实现。请检查下面的代码是否相同。

 $args = array(
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_query' => array(
      array(
    'key'       => '_visibility',
    'value'     => 'hidden',
    'compare'   => '!=',
      )
    )
   );

  $query = new WP_Query( $args ); 

答案 2 :(得分:0)

从WooCommerce 3开始,可见性现在是一种分类法,而不是元数据。这是此代码;

<?php 
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'tax_query' => array(
            array(
                'taxonomy' => 'product_visibility',
                'field'    => 'name',
                'terms'    => 'exclude-from-catalog',
                'operator' => 'NOT IN',
            ),
        ),
    );
    $query = new WP_Query( $args ); 
?>