如果选择了标签,则更改模板

时间:2014-03-04 作者:tmyie

我有以下代码,如果从类别中选择了“street style”,则会更改页面模板。

但是,我想将此标记更改为“street”。我目前拥有:

function get_custom_cat_template($single_template) {
     global $post;

       if ( in_category( \'street-style\' )) {
          $single_template = dirname( __FILE__ ) . \'/street-gallery.php\';
     }
     return $single_template;
}

add_filter( \'single_template\', \'get_custom_cat_template\' ) ;
如果我改变in_categoryis_tag, 什么都没发生。这是不可能的,还是我做得不对?

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

我想你要找的功能是has_tag() 或者更一般地说has_term().

您的功能将变成:

function get_custom_cat_template($single_template) {
     global $post;

       if ( has_tag( \'street\' )) {
          $single_template = dirname( __FILE__ ) . \'/street-gallery.php\';
     }
     return $single_template;
}

add_filter( \'single_template\', \'get_custom_cat_template\' ) ;

SO网友:fischi

功能is_tag() 用于确定是否显示标记存档页面,而不是确定帖子是否具有特定标记。

您需要的是函数has_term( $term, $taxonomy, $post ).

您可以将此函数用于任何分类法,甚至是自定义分类法。您的代码如下所示:

function get_custom_cat_template($single_template) {
    global $post;

    if ( has_term( \'street-style\', \'post_tag\', $post ) ) { // please also check just "tag" if post_tag does not work.
        $single_template = dirname( __FILE__ ) . \'/street-gallery.php\';
    }
    return $single_template;
}

add_filter( \'single_template\', \'get_custom_cat_template\' ) ;

结束

相关推荐