更新3.3.0 / 3.3.1后,Woocommerce archive-product.php模板功能中断

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

Install plugin WP Rollback and then click rollback in the installed plugins menu on woocommerce. Had to do the same.

The else statement is in your elseif statement. you have to put it after like this :

add_filter( 'template_include', 'wpse138858_woocommerce_category_archive_template' );
function wpse138858_woocommerce_category_archive_template( $original_template ) {

    // If cat 1,2,3 return template archive product set 1
    if(is_product_category(array('cat-1','cat-2','cat-3'))) {

        return get_stylesheet_directory().'/woocommerce/archive-product_set_1.php';

    // If cat 4,5,6 return template archive product set 2
    }elseif(is_product_category(array('cat-4','cat-5','cat-6'))) {

        return get_stylesheet_directory().'/woocommerce/archive-product_set_2.php';

    // Else return original template
    }else {

        return $original_template;
    }
}