Created
January 6, 2017 14:52
-
-
Save torbentschechne/aacf615125d1ff5de9ae5ad7179c28c0 to your computer and use it in GitHub Desktop.
WooCommerce - Nested Category/Subcategory Layout
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* The Template for displaying product archives, including the main shop page which is a post type archive | |
* | |
* This template can be overridden by copying it to yourtheme/woocommerce/archive-product.php. | |
* | |
* HOWEVER, on occasion WooCommerce will need to update template files and you | |
* (the theme developer) will need to copy the new files to your theme to | |
* maintain compatibility. We try to do this as little as possible, but it does | |
* happen. When this occurs the version of the template file will be bumped and | |
* the readme will list any important changes. | |
* | |
* @see https://docs.woocommerce.com/document/template-structure/ | |
* @author WooThemes | |
* @package WooCommerce/Templates | |
* @version 2.0.0 | |
*/ | |
if ( ! defined( 'ABSPATH' ) ) { | |
exit; // Exit if accessed directly | |
} | |
get_header( 'shop' ); ?> | |
<?php | |
/** | |
* woocommerce_before_main_content hook. | |
* | |
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content) | |
* @hooked woocommerce_breadcrumb - 20 | |
*/ | |
do_action( 'woocommerce_before_main_content' ); | |
?> | |
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?> | |
<h1 class="page-title"><?php woocommerce_page_title(); ?></h1> | |
<?php endif; ?> | |
<?php | |
/** | |
* woocommerce_archive_description hook. | |
* | |
* @hooked woocommerce_taxonomy_archive_description - 10 | |
* @hooked woocommerce_product_archive_description - 10 | |
*/ | |
do_action( 'woocommerce_archive_description' ); | |
?> | |
<?php if ( have_posts() ) : ?> | |
<?php | |
/** | |
* woocommerce_before_shop_loop hook. | |
* | |
* @hooked woocommerce_result_count - 20 | |
* @hooked woocommerce_catalog_ordering - 30 | |
*/ | |
do_action( 'woocommerce_before_shop_loop' ); | |
/* Category - SubCategory START */ | |
$term = get_queried_object(); | |
$parent_id = empty( $term->term_id ) ? 0 : $term->term_id; | |
$product_categories = get_categories( array( 'taxonomy' => 'product_cat', 'child_of' => $parent_id) ); | |
$i = 1; | |
foreach ($product_categories as $product_category) { | |
echo '<h2>'.$product_category->name.'</h2>'; | |
woocommerce_product_loop_start(); //open ul | |
$args = array( | |
'posts_per_page' => -1, | |
'tax_query' => array( | |
'relation' => 'AND', | |
array( | |
'taxonomy' => 'product_cat', | |
'field' => 'slug', | |
'terms' => $product_category->slug | |
), | |
), | |
'post_type' => 'product', | |
'orderby' => 'menu_order', | |
'order' => 'asc', | |
); | |
$cat_query = new WP_Query( $args ); | |
while ( $cat_query->have_posts() ) : $cat_query->the_post(); | |
wc_get_template_part( 'content', 'product' ); | |
endwhile; // end of the loop. | |
wp_reset_postdata(); | |
woocommerce_product_loop_end(); //close ul | |
if ( $i < count($product_categories) ) | |
echo '<div class="content-seperator"></div>'; | |
$i++; | |
}//foreach | |
/* Category - SubCategory END */ | |
/** | |
* woocommerce_after_shop_loop hook. | |
* | |
* @hooked woocommerce_pagination - 10 | |
*/ | |
do_action( 'woocommerce_after_shop_loop' ); | |
?> | |
<?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?> | |
<?php wc_get_template( 'loop/no-products-found.php' ); ?> | |
<?php endif; ?> | |
<?php | |
/** | |
* woocommerce_after_main_content hook. | |
* | |
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content) | |
*/ | |
do_action( 'woocommerce_after_main_content' ); | |
?> | |
<?php | |
/** | |
* woocommerce_sidebar hook. | |
* | |
* @hooked woocommerce_get_sidebar - 10 | |
*/ | |
do_action( 'woocommerce_sidebar' ); | |
?> | |
<?php get_footer( 'shop' ); ?> |
Please look at this:
-
this is the parent category: https://pcware.com.co/componentes/
-
This is the subcategory: https://pcware.com.co/disco-duro/
But the subcategory doesn't show anything. How can i fix it?
Here's a fix for subcategories: https://gist.github.com/peltopiri/d69df19d8669b11ae3aa7b4716e6171e
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It doesn't work for subcategories. The products aren't show