在我升级到Woocommerce版本3.1.1之前,我已经使用下面的代码多年没有任何问题。
该功能只是根据定义的Woocommerce类别slug将默认的archive-product.php更改为备用模板。
我已经阅读了更改日志,我认为可能与我的问题有关的一些事情但我不确定,因此我为什么要在这里联系:)< / p>
来自更改日志的相关说明似乎是:
修复 - 添加了要替换的woocommerce_output_product_categories woocommerce_product_subcategories功能可以防止过时的主题 模板文件来自商店和类别的输出类别 错误的页面
然而,在之前版本3.3.0中对Woocommerce的默认布局/主题进行了很多更改,这也可能是错误的。
对此的任何帮助或指导都会很棒。
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;
}
}
编辑 - 函数中存在错误,不应该存在,我的错,抱歉...我已直接从实际网站复制代码并只删除了类别所以它更具可读性
答案 0 :(得分:0)
else
语句位于elseif
语句中。你必须像这样把它放在一起:
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;
}
}
答案 1 :(得分:0)
安装插件WP Rollback,然后在woocommerce上安装的插件菜单中单击回滚。不得不这样做。