首页 文章

编辑Woocommerce类别/子类别循环

提问于
浏览
1

我目前正在使用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(); ?>

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

任何建议将不胜感激 .

1 回答

  • 1

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

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

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

    • 粘贴到functions.php文件中 . 重命名该函数,例如:

    function new_name_product_subcategories( $args = array() ) { .... }
    
    • 寻找以下foreach循环:
    foreach ( $product_categories as $category ) {
            wc_get_template( 'content-product_cat.php', array(
                'category' => $category
            ) );
        }
    

    并改为:

    $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++;
            }
    
    • 然后在archive-product.php文件中,更改:
    <?php woocommerce_product_subcategories(); ?>
    

    <?php new_name_product_subcategories(); ?>
    

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

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

相关问题