【问题标题】:Make Wordpress subcategories use Category Template使 Wordpress 子类别使用类别模板
【发布时间】:2010-06-25 01:10:35
【问题描述】:

我有一个类别模板:category-projects.php

此类别有子类别,但它们是指模板 category.php 以获取说明,而不是父类别。如何让子类别按照模板引用的级联顺序引用父类别模板?

*注意,我说的是类别级别的网址,而不是帖子。

【问题讨论】:

    标签: wordpress templates categories


    【解决方案1】:

    一种方法是在您的functions.php 文件中挂钩template_redirect 操作:

    function myTemplateSelect() {
        if (is_category() && !is_feed()) {
            if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) {
                load_template(TEMPLATEPATH . '/category-projects.php');
                exit;
            }
        }
    }
    
    add_action('template_redirect', 'myTemplateSelect');
    

    【讨论】:

    • 呜呜呜呜呜呜!棒极了!有什么方法可以进一步抽象出来,让它适用于所有类别的所有子类别,而不是逐字逐句地声明它们?
    • TheDeadMedic 对您后续问题的回答应该有效。
    • 功能很棒,真的很有用,但是...我有一个简单的问题:-如果我更改永久链接的结构并以这种方式创建公共 url mydomain.com/CATEGORY/categoryname/subcategoryname:mydomain .com/categoryname/subcategoryname 如何让该功能再次工作?实际上,如果我以这种方式更改永久链接结构,则 template_redirect 不再起作用....有什么想法吗?请帮忙!谢谢!
    • 这是迄今为止我发现的最好的方法。我试图让它只对子类别起作用:而不是 if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) 我试过只使用if (cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) 但它不起作用,知道为什么吗?
    【解决方案2】:

    Richard 的回答确实有效,但会严重干扰其他插件。

    我使用add_filtertemplate_include 找到了一个更好的选择,如下例所示

    add_filter( 'template_include', 'my_callback' );
    
    function my_callback( $original_template ) {
        if ( some_condition() ) {
            return SOME_PATH . '/some-custom-file.php';
        } else {
            return $original_template;
        }
    }
    

    感谢https://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/

    【讨论】:

      【解决方案3】:

      据我所知;根据 wp 模板层次结构,category-samplecat.php 仅适用于具有 slug 名称“samplecat”的类别。所以这种方式是不可能的。

      但是在 category.php 文件(适用于没有特殊模板文件的每个类别)中,您可以有条件地检查当前类别是否是“项目”的子项(在我的 answer 中使用此方法到您的其他问题),如果是这样,您可以对其应用相同的 category-projects.php 结构或包含 category-projects.php。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-24
        • 1970-01-01
        相关资源
        最近更新 更多