I've been using the code below for a number of years with no problems what so ever until I upgraded to Woocommerce version 3.1.1.
The function simply changes the default archive-product.php to an alternative template based on the defined Woocommerce category slug.
I've read through the change logs and there are a few things I think that may be connected to my problem but I'm not sure, hence why I'm reaching out here :)
The relevant note from the changelog to me seemed to be:
Fix – Added woocommerce_output_product_categories to replace woocommerce_product_subcategories function to prevent outdated theme template files from outputting categories on the shop and category pages in err.
However, there were many changes made to the default layout/theme of Woocommerce in the previous version 3.3.0 which may also be at fault.
Any help or guidance on this one would be awesome.
add_filter( 'template_include', 'wpse138858_woocommerce_category_archive_template' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {
if ( is_product_category( array( 'cat-1', 'cat-2' ) ) )
{
return get_stylesheet_directory().'/woocommerce/archive-product_no_sidebar.php';
}
elseif ( is_product_category( array( 'cat-3', 'cat-4' ) ) )
{
return get_stylesheet_directory().'/woocommerce/archive-product_sidebar.php';
}
elseif ( is_product_category( array( 'cat-5', 'cat-6' ) ) )
{
return get_stylesheet_directory().'/woocommerce/archive-product_clubs_page.php';
}
else
{
return $original_template;
}
}
EDIT - There were errors in the function that shouldn't have been there, my fault, sorry... I have copied the code straight from the live site and just cut the category down so its more readable