对单期存档页面使用不同的模板(根据自定义分类

时间:2012-06-01 作者:Zach Lysobey

我有2个自定义分类法,每个分类法都有一些术语:

tax1
  term1_1
  term1_2
tax2
  term2_1
  term2_2
  term2_3
我正试图让每个分类法为其单个术语归档页面使用不同的模板文件。一、 E。term1_1 and term1_2 使用一个模板,而term2_1 - 3 使用第二个。我当然可以从main有条件地加载不同的php文件archive.php 但我想知道在标准模板层次结构中是否有这样做的方法。

据我所知,taxonomy-tax1。php对此不起作用(除非我真的搞砸了)

3 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

我会在template_redirect:

function wpse53892_taxonomy_template_redirect() {
    // code goes here
}
add_action( \'template_redirect\', \'wpse53892_taxonomy_template_redirect\' );
然后,检查查询是否为自定义分类法:

if ( is_tax() ) {
    // This query is a custom taxonomy
}
接下来,获取术语对象,并找出它是否有父对象:

// Get the queried term
$term = get_queried_object();

// Determine if term has a parent;
// I *think* this will work; if not see below
if ( 0 != $term->parent ) {
    // Tell WordPress to use the parent template
    $parent = get_term( $term->parent );
    // Load parent taxonomy template
    get_query_template( \'taxonomy\', \'taxonomy-\' . $term->taxonomy . \'-\' . $parent->slug . \'php\' );
}

// If above doesn\'t work, this should:
$term_object = get_term( $term->ID );
if ( 0 != $term_object->parent; {}
所以,把这一切放在一起:

function wpse53892_taxonomy_template_redirect() {

    // Only modify custom taxonomy template redirect
    if ( is_tax() ) {
        // Get the queried term
        $term = get_queried_object();

        // Determine if term has a parent;
        // I *think* this will work; if not see above
        if ( 0 != $term->parent ) {
            // Tell WordPress to use the parent template
            $parent = get_term( $term->parent );
            // Load parent taxonomy template
            get_query_template( \'taxonomy\', \'taxonomy-\' . $term->taxonomy . \'-\' . $parent->slug . \'php\' );
        }
    }
}
add_action( \'template_redirect\', \'wpse53892_taxonomy_template_redirect\' );

SO网友:Eugene Manuilov

检查WordPressTemplate Hierarchy. 正如您所看到的,您可以使用模式taxonomy-$taxonomy-$term.php 为特定分类法和术语指定模板。在你的情况下taxonomy-tax1-term1_1.php, 等

SO网友:Dev

修改条件以定位存档页面。我会使用template\\u包括以下内容:

add_filter( \'template_include\', \'tax_term_template\', 99 );

function tax_term_template( $template ) {

    if ( "add your conditional here"  ) {
        $new_template = locate_template( array( \'tax_term.php\' ) );
        if ( \'\' != $new_template ) {
            return $new_template;
        }
    }

    return $template;
}
我会的NOT use template redirect 根据首席开发商Mark Jaquith的建议。

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。