先说场景先说wordpress中的分类结构是这样的
Level 1: Top
Level 2: -Nextme_1
Level 3: --Nextme_2
--Nextme_3
Level 4: ---Nextme_4
---Nextme_5
现在我需要检查类别的级别是什么?假设我捕获了一个级别 3 的类别,所以我必须使用不同的模板,如果它是级别 4。那么我需要使用另一个模板吗?
任何人都可以给我一些提示吗?
谢谢
拉胡尔
先说场景先说wordpress中的分类结构是这样的
Level 1: Top
Level 2: -Nextme_1
Level 3: --Nextme_2
--Nextme_3
Level 4: ---Nextme_4
---Nextme_5
现在我需要检查类别的级别是什么?假设我捕获了一个级别 3 的类别,所以我必须使用不同的模板,如果它是级别 4。那么我需要使用另一个模板吗?
任何人都可以给我一些提示吗?
谢谢
拉胡尔
如果您没有很多类别,您可以尝试从管理员编辑他们的 slug,然后在您的页面中您以这种方式获得类别 slug:
if (is_category()) {
$cat = get_query_var('cat');
$category = get_category($cat);
echo 'your slug is '. $category->slug;
}
现在,当您编辑类别 slug 时,请尝试根据它们的级别命名它们:cat-lvl-1、cat-lvl-2。然后在您的页面中,您使用一些 php 字符串函数从类别 slug 中提取数字,然后检查该数字:
if ($category->slug == 1 ) {
//load the template for the category of level 1
}
if ($category->slug == 2 ) {
//load the template for the category of level 2
}
等等。
稍后编辑:试试这个:
function get_level($category, $level = 0)
{
if ($category->category_parent == 0) {
return $level;
} else {
$level++;
$category = get_category($category->category_parent);
get_level($category, $level);
}
}
if (is_category()) {
$cat = get_query_var('cat');
$yourcat = get_category($cat);
echo get_level($yourcat);
}
您可以调用get_ancestors()函数来获取an array containing the parents of the given object
. 然后你需要计算结果中的元素。
function get_the_level($id, $type = 'category') {
return count( get_ancestors($id, $type) );
}
if( is_category() ) {
$level = get_the_level( $cat );
}
elseif( is_product_category() ) {
$level = get_the_level( $wp_query->get_queried_object()->term_id, 'product_cat' );
}
非常感谢。这是极好的,只需稍作更改,您编写的代码就可以了,但它没有返回任何值。(即 $level)虽然它的计算是正确的。我做了一个小改动,现在它工作正常,对下面给出的代码进行了轻微编辑..
`
function get_level($category, $level = 0)
{
if ($category->category_parent == 0) {
return $level;
} else {
$level++;
$category = get_category($category->category_parent);
return get_level($category, $level);
}
}
if (is_category()) {
$cat = get_query_var('cat');
$yourcat = get_category($cat);
echo get_level($yourcat);
}
`
谢谢@zuzuleinen
几个月前我访问了这个页面。我今天回来了,在上面的解决方案上箭头然后仍然去挖掘。虽然它是一个很好的解决方案,但 Wordpress 通常会提供更好或接近的解决方案。
get_category_parents()
这个函数基本上和 Rahul 输入的一样。它还称自己为最合乎逻辑的方法,这就是为什么 Rahul 在这点上从我这里得到一个观点。不要使用 $link,返回一串类别,explode() 然后计算它们,或者我想我们可以计算使用分隔符的次数并加 1。
function get_category_parents( $id, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
$chain = '';
$parent = get_term( $id, 'category' );
if ( is_wp_error( $parent ) )
return $parent;
if ( $nicename )
$name = $parent->slug;
else
$name = $parent->name;
if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
$visited[] = $parent->parent;
$chain .= get_category_parents( $parent->parent, $link, $separator, $nicename, $visited );
}
if ( $link )
$chain .= '<a href="' . esc_url( get_category_link( $parent->term_id ) ) . '" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $parent->name ) ) . '">'.$name.'</a>' . $separator;
else
$chain .= $name.$separator;
return $chain;
}