Theme for subcategories

时间:2015-02-18 作者:Alvaro

我正在使用相同菜单处理类别(城市)和子类别(例如:汽车、动物、房屋)。

因此,现在我的类别结构如下所示:

- London
-- cars 
-- animals
-- houses

- Manchester
--cars
--animals
--houses
每个子类别的slug(似乎它们必须是唯一的)的名称如下category_name + subcategory_name 看起来像london-cars, manchester-cars.

现在,我想为我的主要类别(城市)使用不同于子类别(汽车、动物、房屋)的模板。

我读过this topic 这就提出了一种方法,但它有一个大问题:我需要在所有类别中创建尽可能多的子类别。

这使得它无法维护。

The other option I found 是创建使用主题category-slug.php, 但这也意味着我必须在所有部分中创建尽可能多的子类别主题。

还有其他方法吗?

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

您可以使用template\\u重定向挂钩来检查您的帖子是否是一个类别,然后检查它是否是一个子类别。。。如果是,请强制使用不同的模板。

例如(假设您使用的是wordpress类别)

function my_maybe_override_category_template( $template ) {
    # Make sure you are about to show a category term
    if ( is_category() ) {
        # Grab the term that content is to be displayed for
        global $wp_query;
        $term = $wp_query->get_queried_object();
        if ( 0 < (int)$term->parent ) {
            # This term has a parent, try to find your special child term template
            $found = locate_template(\'template_child_categories.php\');
            if ( !empty( $found ) ) {
                # Override the normal template as we found the one we created
                $template = $found;
            }
        }
    }
}
add_action(\'template_redirect\', \'my_maybe_override_category_template\');
除非我有点不对劲,否则这应该可以满足您的要求,前提是:

创建一个名为template\\u child\\u categories的特殊模板。php,它将用于显示您的子术语

SO网友:Alvaro

最后做了这件事,看起来更简单:

if (is_category()) {
    $this_category = get_category($cat);
    if (get_category_children($this_category->cat_ID) != "") {
        // This is the Template for Category level 1
        include(TEMPLATEPATH.\'/location.php\');
    }
    else{
        // This is the Template for Category level 2
        include(TEMPLATEPATH.\'/subcategory.php\');
    }
} 

SO网友:sub0

上述结构的问题是子类别的阻塞。

USA > (slug: usa)
-News (slug: news)
-Attractions (slug: attractions)
一旦完成以上操作,并且您创建了具有更多类别的相同结构,您将得到的问题是slug,请参见下面的示例

Canada > (slug: canada)
-News > (slug: news-canada)
-Attractions (slug: attractions-canada)
一种可能的解决方案是,如果你逆转这种情况

将子类别设为父类别,并按国家名称对其进行标记,请参见下面的示例。

News > Posts have tag: USA, Canada, etc
Attractions  > Posts have tag: USA, Canada, etc

结束

相关推荐

将目录符号链接到wp-Content/Themes

是否可以将我的项目文件夹中的目录符号链接到我的wp content/themes文件夹,该文件夹位于名为chassis的流浪设置中:https://github.com/Chassis/Chassis ?我尝试使用ln-s进行符号链接,但我的wordpress安装没有识别它,因为我没有在外观>主题管理面板中看到它。我想知道是否有可能做我想做的事。我假设这一直都在做,但为什么它对我不起作用呢?