子类别的不同模板

时间:2016-11-25 作者:TBHM admin

我想为类别和子类别设置不同的模板类别模板在类别中设置。PHPI可以从子类别加载子类别模板。php或类似的东西?

2 个回复
最合适的回答,由SO网友:Milo 整理而成

The template hierarchy has filters 适用于所有类型的模板。这里我们可以使用category_template, 检查当前类别是否有父类别,并加载subcategory.php 文件在这种情况下:

function wpd_subcategory_template( $template ) {
    $cat = get_queried_object();
    if ( isset( $cat ) && $cat->category_parent ) {
        $template = locate_template( \'subcategory.php\' );
    }

    return $template;
}
add_filter( \'category_template\', \'wpd_subcategory_template\' );

SO网友:user3751604

我已经编辑了您的代码以添加更多功能。如果有人希望为每个子类别使用不同的模板。例如,如果您对类别进行了如下排序:

大陆、国家、城市,你需要一个不同的城市模板。首先,我们看看城市是否有孩子,如果没有,我们称之为城市模板。代码的其余部分是检查类别是否有父类别。

// Different template for subcategories
function wpd_subcategory_template( $template ) {
    $cat        = get_queried_object();
    $children   = get_terms( $cat->taxonomy, array(
        \'parent\'     => $cat->term_id,
        \'hide_empty\' => false
    ) );

    if( ! $children ) {
        $template = locate_template( \'category-country-city.php\' );
    } elseif( 0 < $cat->category_parent ) {
        $template = locate_template( \'category-country.php\' );
    }

    return $template;
}
add_filter( \'category_template\', \'wpd_subcategory_template\' );