对子类别应用自定义类别模板

时间:2014-01-12 作者:scrineym

您好,在我的wordpress网站上,我有一个带有slug(cat-a)的a类自定义模板。我创建了一个category-cat-a.php文件,为这个类别提供了一个自定义布局,这样就可以毫无问题地工作了。

我想知道是否有任何简单的方法可以将相同的布局应用于A的所有子类别(我真的不想为每个子类别创建自定义模板,因为有很多)?

2 个回复
SO网友:Shazzad

如果a 是类别slug,则以下代码可以工作-

add_action(\'template_include\', \'wpse129481_template_include\');
function wpse129481_template_include($t)
{
    // is category archive page
    if( is_category() )
    {
        // current queried category id from queried object
        $child_id = get_queried_object_id();

        // parent category object, getting it by slug.
        $parent_cat = get_term_by(\'slug\', \'a\', \'category\');

        // current category object, can also be used get_queried_object()
        $child_cat = get_term($child_id, \'category\');

        // important part here is the cat_is_ancestor_of() function.
        // it checks if first category is parent/grand parent of second
        if( isset($parent_cat->term_id) 
            && isset($child_cat->term_id)
            && $parent_cat->term_id != $child_cat->term_id
            && cat_is_ancestor_of( $parent_cat, $child_cat )
        )
        {
            locate_template( array(\'category-cat-a.php\') );
        }
    }
    return $t;
}

SO网友:Robin Westerlundh

我不知道这是否是最好的方法,但我想到的一种可能性是挂接template\\u重定向函数。

如果它是一个自定义的post\\u类型,我希望孩子们有一个唯一的模板,我会这样做。你需要努力使用分类法,但同样的原则也适用。

add_filter(\'template_redirect\', \'page_template_override\' );

function page_template_override() {
    global $wp_query,$post;

  if(isset($wp_query->query_vars[\'posttype\']) && $post->post_parent > 0){
              include( get_template_directory() . \'/template-name.php\' );
           exit;
  }
}

结束

相关推荐

具有自定义分类的自定义帖子类型中的WP_DROPDOWN_CATEGORIES

我有一个自定义的帖子类型,它有自己的分类法,基本上“show Vinces”是帖子类型,Vincement regions是分类法。看到一个场馆无法在多个地区存在,我删除了默认的metta框,并使用wp_dropdown_categories(). 分类法项目正在输出并按我所希望的方式显示,但它们不会被提交,并且下拉列表在提交后不会保留所选内容。我已经尽我所能地查看原始metabox的各种属性,并尝试将这些属性应用到下拉列表中,但到目前为止,我没有任何乐趣。我看过一些various WPSE上的帖子和ha