编辑Woocommerce类别/子类别循环

时间:2017-04-06 14:37:45

标签: wordpress woocommerce zurb-foundation-6

我目前正在使用WooCommerce集成构建自定义WP主题。首先是一点背景。我的主题是使用Foundation 6.我已经禁用了WooCommerce样式和布局。我正在使用覆盖模板,以便我可以集成Foundation。

我的商店页面列出了产​​品类别,而不是单个产品。然后,一旦选择了一个类别,您将获得另一个子类别列表,最后是产品。

我可以使用以下代码将产品放入4列行中:

环start.php

<div class="row">

归档product.php

<?php woocommerce_product_loop_start(); ?>

            <?php woocommerce_product_subcategories(); ?>

            <?php $counter = 1; while ( have_posts() ) : the_post(); ?>

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

            <?php 

                if( $counter % 4 == 0 ) : echo '</div><div class="row">'; endif;

                $counter++;

                endwhile; // end of the loop. ?>

<?php woocommerce_product_loop_end(); ?>

环end.php

</div>

内容product.php

<div <?php if($wcp_last_loop) : post_class('medium-3 columns end'); else : post_class('medium-3 columns'); endif; ?>>
<?php
/**
 * woocommerce_before_shop_loop_item hook.
 *
 * @hooked woocommerce_template_loop_product_link_open - 10
 */
do_action( 'woocommerce_before_shop_loop_item' );

/**
 * 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' );

/**
 * woocommerce_shop_loop_item_title hook.
 *
 * @hooked woocommerce_template_loop_product_title - 10
 */
do_action( 'woocommerce_shop_loop_item_title' );

/**
 * 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' );

/**
 * woocommerce_after_shop_loop_item hook.
 *
 * @hooked woocommerce_template_loop_product_link_close - 5
 * @hooked woocommerce_template_loop_add_to_cart - 10
 */
do_action( 'woocommerce_after_shop_loop_item' );
?>
</div>

所以这适用于非类别的产品。我知道类别和子类别是由

引入的
<?php woocommerce_product_subcategories(); ?>

我也知道我必须使用钩子或过滤器来连续放置每4个类别,但我不熟悉WP钩子和过滤器,因此很难找到解决方案。我一直试图阅读钩子和过滤器,但希望能找到一些更具体的帮助,以帮助我尝试做什么。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

所以我最终找到了一个解决方案,不确定它是否是最好的路线,但它有效。

对于可能遇到同样问题的其他人来说,这就是我所做的。

  1. 位于wc-template-functions.php中的woocommerce_product_subcategories()。复制整个功能,包括检查是否存在。

  2. 粘贴到functions.php文件中。重命名该功能,例如:

    function new_name_product_subcategories( $args = array() ) { .... }
    
  3. 查找以下foreach循环:

        foreach ( $product_categories as $category ) {
            wc_get_template( 'content-product_cat.php', array(
                'category' => $category
            ) );
        }
    
  4. 并改为:

            $cat_counter = 1;
            foreach ( $product_categories as $category ) {
                wc_get_template( 'content-product_cat.php', array(
                    'category' => $category
                ) );
                if( $cat_counter % 4 == 0 ) : echo '</div><div class="row">'; endif;
                $cat_counter++;
            }
    
    1. 然后在archive-product.php文件中,更改:

      <?php woocommerce_product_subcategories(); ?>
      
    2. <?php new_name_product_subcategories(); ?>
      

      如果我找到通过WP钩子做的方法,我会发布回复,但这是我现在想到的唯一方法。

      另外,我没有详细介绍如何在各个类别中添加.columns类。我在content-product_cat.php文件中添加了这些文件。