带有WooCommerce定制查询的WordPress

时间:2016-10-12 作者:Xenocide122

我是wp-dev的新手,正在试图找出如何替换或更改woocommerce在任何存档页面上显示我所有产品的查询,或显示我的产品列表的页面,不知道它叫什么,但显示图片、名称、价格和;链接到产品页。我有多个类别,所以我想我需要添加代码来显示不同的类别,这取决于它们所在的cat页面?除非我看得太深了。

我正在尝试制作一个高级循环,它根据一些东西向我显示产品组。首先我想看到所有特色产品,然后我想看到不超过6个月的产品,然后是菜单顺序中的所有其他内容,然后是标题顺序升序。

更复杂的是,我不想要任何副本。我认为我的代码可以正常工作,但我不确定具体放在哪里或如何放置,所以woo开始使用它并显示我的结果。下面是我正在使用的代码,我把它放在woocommerce中。php页面在我的子主题中,它不会显示任何内容,除非我回显或打印一些内容。所以我知道我遗漏了一些东西,但作为一个新手,我不知道我需要搜索什么才能看到结果。

我的代码:(woocommerce.php)

<?php

if ( is_shop() || is_product_category() || is_product_tag() ) { // Only run on shop archive pages, not single products or other pages
    // Products per page
    $per_page = 12;
    if ( get_query_var( \'taxonomy\' ) ) { // If on a product taxonomy archive (category or tag)   

        //First loop 
      $args = array(
            \'post_type\' => \'product\',
            \'orderby\'  => array( \'meta_value\' => \'DESC\' ),
            \'meta_key\' => \'_featured\',
            \'posts_per_page\' => $per_page,
            \'paged\' => get_query_var( \'paged\' ),
        );    
      $loop = new WP_Query( $args );
      if (have_posts()) :        
          while ($loop->have_posts()) : $loop->the_post();    
              $post_id = get_the_ID();
              $do_not_duplicate[] = $post_id;
          endwhile;
      endif;
      rewind_posts();

      //Second loop    
      $args = array( 
          \'post_type\' => \'product\',
          \'orderby\' => \'date\',
          \'order\' => \'DESC\',
          \'date_query\' => array(
          array(
              \'before\' => \'6 months ago\',
              ),
          ), 
            \'post__not_in\' => $do_not_duplicate
      );
      $loop = new WP_Query( $args );
      if (have_posts()) :        
          while ($loop->have_posts()) : $loop->the_post();    
              $post_id = get_the_ID();
              $do_not_duplicate[] = $post_id;
          endwhile;
      endif;
      rewind_posts();

      //Third loop 
      $args = array(
          \'post_type\' => \'product\',
          \'orderby\'  => array( 
              \'menu_order\' => \'ASC\', 
              \'title\' => \'ASC\',
              \'post__not_in\' => $do_not_duplicate
          ), 

        );  

      $loop = new WP_Query( $args );
      if (have_posts()) :        
          while ($loop->have_posts()) : $loop->the_post();    
              $post_id = get_the_ID();
              $do_not_duplicate[] = $post_id;
          endwhile;
      endif;              

    } else { // On main shop page
        $args = array(
            \'post_type\' => \'product\',
            \'orderby\' => \'date\',
            \'order\' => \'DESC\',
            \'posts_per_page\' => $per_page,
            \'paged\' => get_query_var( \'paged\' ),
        ); 

    }

    // Set the query
    $products = new WP_Query( $args );

    // Standard loop
    if ( $products->have_posts() ) :
        while ( $products->have_posts() ) : $products->the_post();  
        endwhile;
        wp_reset_postdata();
    endif;

} else { // If not on archive page (cart, checkout, etc), do normal operations
    woocommerce_content(); 
}
任何能帮我指引正确方向的人都会帮上大忙!

Update

我忘了添加\'post_type\' => \'product\'在我的参数中(刚刚更新),但现在我可以在添加时看到我的标题the_title(); 在我的while循环中,我如何告诉它像对待任何归档页面一样把所有内容都吐出来(称为模板?),另外,我如何使其更通用,以便根据我所在的类别/归档页面,仅显示该类别的产品?再次感谢!

3 个回复
SO网友:Steve

    // Standard loop
if ( $products->have_posts() ) :
    while ( $products->have_posts() ) : $products->the_post();  
    endwhile;
    wp_reset_postdata();
endif;
这实际上没有显示任何数据。尝试至少添加the_title(); 在那里。

SO网友:sagar

您所指的页面是存档产品。php,基本上是WooCommerce中的购物页面,关于WooCommerce中的查询,我会给你一个链接,希望能解决你在这方面的问题woocommerece loop

SO网友:mrben522

除非别无选择,否则不要重写Woocommerce模板文件。使用filters 如果必须或shortcodes 如果很简单的话。使用我上面链接的文档,只需使用短代码就可以完成您要做的事情。

相关推荐

WordPress Custom Post Loop

我正在尝试循环浏览自定义WordPress帖子,遇到了一个问题,比如我添加了自定义字段并想在中显示它<li> 使用循环。我成功地完成了操作,但数据/链接/类别正在重复,如果类别与以下内容相同,我希望只显示一次:如果我有2篇带有data1类别的帖子,那么链接将只显示data1once 但我有2个不同类别的帖子,然后它会分别显示每个帖子。Sample Code:<ul class="filter filter-top"> <li cla