有一个很常见的类别Catalog
($category->cat_ID = 2
)。它包含一些子类别,例如Series1
,Series2
等。每个子类别都包含一些子类别,例如Type1
,Type2
等。每个子子类别都包含一些产品(类型post
)。
我不需要显示常见类别Catalog
及其子类别,但我需要在各个页面上显示子产品及其产品。
如何为类别404.php
及其子类别和每个子类别(包含产品列表)和每个产品的子类别和自定义模板设置Catalog
模板?
我在下面找到了代码(functions.php
文件)
function catalog_template() {
// Get the category id from global query variables
$cat = get_query_var('cat');
if(!empty($cat)) {
// Get the detailed category object
$category = get_category($cat);
// Check if it is sub-category and having a parent, also check if the template file exists
if( ($category->parent != '0') && ($category->parent == '2') && (file_exists(TEMPLATEPATH . '/catalog.php')) ) {
// Include the template for sub-catgeory
include(TEMPLATEPATH . '/catalog.php');
exit;
}
return;
}
return;
}
add_action('template_redirect', 'catalog_template');
但我不知道如何根据我的需要定制它。
UPD。我写了下面的代码
function catalog_template() {
// Get the category id from global query variables
$cat = get_query_var('cat');
if(!empty($cat)) {
$catalog_id = get_cat_ID('Catalog');
$catalog_child_cats = array();
foreach(get_all_category_ids() as $child_cat)
{
if(get_category($child_cat)->parent==$catalog_id)
{
$catalog_child_cats[]=$child_cat;
}
}
// Get the detailed category object
$category = get_category($cat);
$cat_parent_id = $category->cat_ID;
// Check if it is sub-category and having a parent, also check if the template file exists
if( (in_array($cat_parent_id, $catalog_child_cats)) && (file_exists(TEMPLATEPATH . '/catalog.php')) ) {
// Include the template for sub-sub-catgeory
include(TEMPLATEPATH . '/catalog.php');
exit;
}
return;
}
return;
}
add_action('template_redirect', 'catalog_template');
但它也catalog_template
使用sub-categories
。如何为常见类别404.php
及其子类别设置Catalog
?
UPD2 我在代码中发现了一个错误,需要
// Get the detailed category object
$category = get_category($cat);
$cat_parent_id = $category->category_parent;
答案 0 :(得分:0)
我建议不要使用404,因为这意味着不同的,具体的;内容不存在或不可用,内容不是该分类的子项。
但是,如果你想......只需复制404.php中的代码并将其嵌套在一个查询类别+ 1级别的条件语句中。像这样:
if(is_category('Catalog')){ $ this_category = get_queried_object(); if(0!= $ this_category-> parent){ //代码来自404.php }}