WordPress的覆盖模板层次结构

时间:2018-10-17 18:52:53

标签: wordpress custom-post-type taxonomy

我有一个自定义帖子类型“ accommodation”和一个自定义分类法“ tax_destination”。 当我输入此网址时:

/?post_type=accommodation&tax_destination=granada

呈现的模板是:taxonomy-tax_destination.php

是否可以改用archive-accommodation.php?

我要使用存档模板显示该分类法的住宿清单。

1 个答案:

答案 0 :(得分:0)

WordPress具有方便使用的过滤器template_include,可让您覆盖特定请求中包括的模板文件。您可以使用is_tax()将其与支票相结合。 $term参数是可选的,但是由于您包含了一个参数,因此我将其包含在内,因此它仅适用于granada术语:

add_filter( 'template_include', 'accommodation_template', 99 );
function accommodation_template( $template ) {
    if( is_tax( 'tax_destination', 'granada' ) ){
        $new_template = locate_template( array( 'archive-accommodation.php' ) );
        if( !empty( $new_template ) ){
            return $new_template;
        }
    }

    return $template;
}

如果将其放在functions.php文件中,它将确定当前请求是否针对分类法granada中的术语tax_destination,并返回archive-accommodation.php模板

注意:如果您在其他职位类型上重复使用这些税项/条款,则可能还需要在if语句中包括is_post_type_archive( 'accommodation' )get_post_type() == 'accommodation'