更新3.3.0 / 3.3.1后,Woocommerce archive-product.php模板功能被破坏

时间:2018-02-08 11:17:15

标签: php wordpress function templates woocommerce

在我升级到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;
    }
}

编辑 - 函数中存在错误,不应该存在,我的错,抱歉...我已直接从实际网站复制代码并只删除了类别所以它更具可读性

2 个答案:

答案 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上安装的插件菜单中单击回滚。不得不这样做。