我目前正在使用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钩子和过滤器,因此很难找到解决方案。我一直试图阅读钩子和过滤器,但希望能找到一些更具体的帮助,以帮助我尝试做什么。
非常感谢任何建议。
答案 0 :(得分: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文件中添加了这些文件。