每个类别级别的不同模板

时间:2017-10-03 作者:Infolu

我正在寻找一种解决方案,为每个类别级别动态创建不同的模板。

类别

--类别

---类别

----类别

我想到了一些方法来获取分类法的当前级别ID,使用下面这样的函数,但我没有找到解决方案。

在分类法中,我没有找到任何返回我级别或每个级别唯一ID的内容

$term = get_term_by( \'slug\', get_query_var(\'term\'), get_query_var(\'taxonomy\') );
echo $term->cat_level_id;


switch ($current_level_id) {
                case \'level_1\':
                get_template_part( \'taxonomy-content-level_1\',);
                break;
                case \'level_2\':
                get_template_part( \'taxonomy-content-level_2\',);
                break;
                case \'level_3\':
                get_template_part( \'taxonomy-content-level_3\',);
                break;
                case \'level_4\':
                get_template_part( \'taxonomy-content-level_4\' );
                break;
            }
我知道wordpress理解分类法自定义slug。php,但我不能使用它,因为创建模板是不可行的,因为有许多类别/子类。

提前感谢您的关注。

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

我花了一些时间来思考这个问题,我能够找到一个干净的解决方案。

下面是我解释的一段代码。

这对我很有效。

//Search taxonomy current category
$term = get_term_by( \'slug\', get_query_var(\'term\'), get_query_var(\'taxonomy\') );
//Search taxonomy current parents category
$level = get_category_parents( $term->term_id, true, \',\' );
//print_r( $levels );
//$str = \'test, test, test, test,,\';
$level_count = substr_count($level, \',\');
switch ($level_count) {
  case 1:
  echo "Level 1";
  get_template_part( \'taxonomy-custom\', \'level-1\' );
  break;
  case 2:
  echo "Level 2";
  get_template_part( \'taxonomy-custom\', \'level-2\' );
  break;
  case 3:
  echo "Level 3";
  get_template_part( \'taxonomy-custom\', \'level-3\' );
  break;
  case 4:
  echo "Level 4";
  get_template_part( \'taxonomy-custom\', \'level-4\' );
  break;
  default:
  echo "Level others";
  get_template_part( \'taxonomy-custom\', \'levels\' );
}
您好

SO网友:kero

虽然我不知道有哪种方法已经实现了这一点,但一种简单的方法可以是像这样计算(祖父母)的数量:

function get_level($id=NULL, $taxonomy=\'\') {
   if ( ! $id) {
     $id = get_queried_object_id();
   }

   $term = get_term($id, $taxonomy, OBJECT);
   if ($term === NULL)
     return 0;

   if ($term->parent == 0)
     return 1;

   return get_level($term->parent, $taxonomy) + 1;
 }
它将为没有父项的每个学期返回1,为“第一级”返回2,等等。

您可以直接在get_template_part(). 在示例中$hierarchical_taxonomies 是要使用这些特殊模板的分类法数组。

$hierarchical_taxonomies = array(\'post_tag\', \'my_tax\');
if (in_array(get_query_var(\'term\'), $hierarchical_taxonomies)) {
  get_template_part(\'taxonomy/level\', get_level(NULL, get_query_var(\'term\')));
}
这将尝试加载分类法/级别1。php,分类法/二级。php。。确保这些文件存在!

结束

相关推荐

有没有办法在Custom Post Listing页面上重新排序Custom Taxonomy下拉菜单?

我用过register_taxonomy() 具有\'show_admin_column\' => true 成功获取自定义帖子类型列表页面上的下拉列表。默认情况下,下拉列表按ID顺序显示术语。有人知道把这个改成字母顺序的方法吗?