2015-10-02 6 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' (аргумент фильтра можно назвать другим способом). – 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) 
Смежные вопросы