2015-10-02 142 views
1

我已经有了相关产品成立,但它只是显示2.我需要它横跨显示5,但没有代码,我已经调整了改变任何东西。WooCommerce相关产品只显示2个产品

这是我的related.php代码:

<?php 

if (! defined('ABSPATH')) { 
    exit; // Exit if accessed directly 
} 

global $product, $woocommerce_loop; 

if (empty($product) || ! $product->exists()) { 
    return; 
} 

$related = $product->get_related($posts_per_page); 

if (sizeof($related) == 0) return; 

$args = apply_filters('woocommerce_related_products_args', array(
    'post_type'   => 'product', 
    'ignore_sticky_posts' => 1, 
    'no_found_rows'  => 1, 
    'posts_per_page'  => 5, 
    'orderby'    => $orderby, 
    'post__in'    => $related, 
    'post__not_in'   => array($product->id) 
)); 

$products = new WP_Query($args); 

$woocommerce_loop['columns'] = $columns; 

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

    <div class="related products"> 

     <h2><?php _e('Related Products', 'woocommerce'); ?></h2> 

     <?php woocommerce_product_loop_start(); ?> 

      <?php while ($products->have_posts()) : $products->the_post(); ?> 

       <?php wc_get_template_part('content', 'product'); ?> 

      <?php endwhile; // end of the loop. ?> 

     <?php woocommerce_product_loop_end(); ?> 

    </div> 

<?php endif; 

wp_reset_postdata(); 

,这是对单一产品页面模板的相关产品代码:

<div class="row"> 
       <div class="col-md-12"> 
        <?php echo do_shortcode ('[related_products per_page="5"]'); ?> 
       </div> 
       </div> 
+0

我认为这是关系到过滤器'woocommerce_related_products_args',它可能改变'posts_per_page'值。如果这个过滤器有任何定义,你可以检查你的主题吗? – vard

+0

定义的唯一'posts_per_page'是在我粘贴在related.php上面的代码中,它被设置为5. – graphixg1

+0

我在说过滤器['woocommerce_related_products_args'](http://hookr.io/filters/woocommerce_related_products_args/ ) - 搜索它而不是'posts_per_page'(filter参数可以用其他方式命名)。 – vard

回答

0

你需要创建一个woocomerce子页和连接对此。 'posts_per_page'=> 5,无法控制当前显示的内容。 woocomerce页面处理它。

Replace 
<?php wc_get_template_part('content', 'product'); ?> 
with 
<?php wc_get_template_part('content', 'similarProductsFive'); ?> 

然后,如果您使用的是子主题创建一个名为“woocommerce”文件夹,将一个名为“similarProductsFive.php”它里面的文件,或者将孩子woocommerce文件夹你的主题内部的文件。

然后将此代码添加到similarProuctFive.php

<?php 
/** 
* The template for displaying product content within loops. 
* 
* Override this template by copying it to yourtheme/woocommerce/content-product.php 
* 
* @author  WooThemes 
* @package  WooCommerce/Templates 
* @version  1.6.4 
*/ 

if (! defined('ABSPATH')) { 
    exit; // Exit if accessed directly 
} 

global $product, $woocommerce_loop; 

// Store loop count we're currently on 
if (empty($woocommerce_loop['loop'])) 
    $woocommerce_loop['loop'] = 0; 

// Store column count for displaying the grid 
if (empty($woocommerce_loop['columns'])) 
    $woocommerce_loop['columns'] = apply_filters('loop_shop_columns', 4); 

// Ensure visibility 
if (! $product || ! $product->is_visible()) 
    return; 

// Increase loop count 
$woocommerce_loop['loop']++; 

// Extra post classes 
$classes = array(); 
if (0 == ($woocommerce_loop['loop'] - 1) % $woocommerce_loop['columns'] || 1 == $woocommerce_loop['columns']) 
    $classes[] = 'first'; 
if (0 == $woocommerce_loop['loop'] % $woocommerce_loop['columns']) 
    $classes[] = 'last'; 
    $classes[] = "store-similar-products product"; 
?> 
<li <?php post_class($classes); ?>> 

    <?php do_action('woocommerce_before_shop_loop_item'); ?> 

    <a href="<?php the_permalink(); ?>"> 

     <?php 
      /** 
      * woocommerce_before_shop_loop_item_title hook 
      * 
      * @hooked woocommerce_show_product_loop_sale_flash - 10 
      * @hooked woocommerce_template_loop_product_thumbnail - 10 
      */ 
      do_action('woocommerce_before_shop_loop_item_title'); 
     ?> 

     <h3><?php the_title(); ?></h3> 

     <?php 
      /** 
      * woocommerce_after_shop_loop_item_title hook 
      * 
      * @hooked woocommerce_template_loop_rating - 5 
      * @hooked woocommerce_template_loop_price - 10 
      */ 
      do_action('woocommerce_after_shop_loop_item_title'); 
     ?> 

    </a> 

    <?php 

     /** 
     * woocommerce_after_shop_loop_item hook 
     * 
     * @hooked woocommerce_template_loop_add_to_cart - 10 
     */ 
     do_action('woocommerce_after_shop_loop_item'); 

    ?> 

</li> 

然后,您可以更改产品的数量显示在这里:

$woocommerce_loop['columns'] = apply_filters('loop_shop_columns', 4) 
相关问题