分层分类法与非分层分类法之间的区别?


34

问题是“层次分类法和非层次分类法有什么区别?” 这个问题起初确实让我感到难过,所以我认为将其与其他浏览该站点的人进行区分是个好主意。

具体来说,问题是指向hierarchical传递给register_taxonomy()函数的参数。更具体地说,这之间有什么区别:

'hierarchical'=>否

register_taxonomy('movie-genre', 'movie', array(
  'hierarchical'    => false,
  'label'           => 'Genre',
  'query_var'       => 'movie-genre',
  'rewrite'         => array('slug' => 'genres' ),
));

和这个?

'hierarchical'=> true

register_taxonomy('movie-genre', 'movie', array(
  'hierarchical'    => true,
  'label'           => 'Genre',
  'query_var'       => 'movie-genre',
  'rewrite'         => array('slug' => 'genres' ),
));

请注意,我将继续回答我自己的问题,但是除非别人也没有提出很好的答案,否则我不会将其标记为最佳。我的直觉也告诉我,我可能无法完全把握两个二分法之间的所有区别,所以如果不能,请告诉我们我错过了什么。


您还能解释什么是分层的吗?分类组是否按帖子类型分层?还是将单个分类法归类到分类法组?我猜只是被“分层”一词所吸引。谢谢。
戴夫

Answers:


42

简单的答案是,在分级分类都可以有子项。但是还有什么呢?

'hierarchical'=> false

当您指定a时,'hierarchical'=>false您会得到以下类型的metabox,这是WordPress也用于Post Tag的metabox格式:

$ hierarchical == false时,“发布”编辑屏幕中的“分类学术语”元框

'hierarchical'=> true

但是,当您指定时,'hierarchical'=>true会得到以下类型的metabox,这是WordPress也用于Categories的metabox格式:

$ hierarchical == true时,后编辑屏幕中的分类术语词元框

当然,上面的示例还指出了层次分类可能有点麻烦的地方,因为在现实生活中,子类别通常适用于许多父类别。即使如此低落的“许多父母”也不是WordPress中分层分类法的工作原理,但无论 WordPress如何工作,IMO几乎不可能对任何事物进行完美分类。因此,告诫Empor!

关于自定义分类注册,或“为什么不保存?”

虽然与您是不是尝试新的自定义分类法的新手这个问题没有直接关系,(或者是我写这篇文章时没有经历过像我一样注意的经验丰富的开发人员!),您很可能会尝试register_taxonomy()像代码一样添加您可以直接在问题中看到主题functions.php文件中的内容。糟糕!

如果您确实将代码直接添加到functions.php您的metabox中,则会显示出来,但不会保存您新添加的条款(并且以'heirarchical'=>truemetabox 的形式,您现有的条款不会与复选框一起加载。)这是因为您需要注册自定义分类法(和自定义帖子类型)init,例如:

<?php
add_action('init','register_movie_genre_taxonomy');
  function register_movie_genre_taxonomy() {
    register_taxonomy('movie-genre', 'movie', array(
      'hierarchical'    => true,
      'label'           => 'Movie Genre',
      'query_var'       => 'movie-genre',
      'rewrite'         => array('slug' => 'genres' ),
    ));
}

希望这可以帮助!


分层分类法是否与自定义类别相同?非分级分类法是否与自定义标签一样?
丹尼尔(Daniel)

1
@ ravensfan55222-不完全是,但是差不多。内置的类别分类系统只是许多潜在的层次分类法之一,而不是与自定义类别相同的“层次分类法”。同样,(发布)标签只是非分层分类法的一个示例。更正确地说,“分层”只是分类法的一个属性,就像标签如何成为分类法的正义属性或颜色如何是汽车的属性一样。那可能就是您的意思,但我想澄清一下。
MikeSchinkel 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.