【问题标题】:Woocommerce Remove hidden products from WP_Query loopWoocommerce 从 WP_Query 循环中删除隐藏的产品
【发布时间】:2018-12-17 05:23:40
【问题描述】:

我有一个设置为目录可见性的 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; ?>

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    也检查一下: usgin pre_get_posts

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢,但这似乎没有抓住任何产品
      【解决方案3】:

      从 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 ); 
      ?>  
      

      【讨论】:

        【解决方案4】:

        所有答案都对 WooCommerce 5.5.1 没有帮助 如果您使用 WP_Query (与我使用的相同),只有一种方法会有所帮助。 添加这个

        'post_status' => 'publish',
        

        $args 的所有代码如下所示:

        $args = array(
          'posts_per_page' => 1,
          'post_type' => 'product',
          'post_status' => 'publish',
        ); 
        $loop = new WP_Query( $args );
        

        如果使用 wc_get_products,那么:

        $args = array(
          'visibility' => 'visible',
        );
        $products = wc_get_products( $args );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-19
          • 2018-05-17
          • 1970-01-01
          • 2021-09-21
          • 2018-05-18
          相关资源
          最近更新 更多