問題は "階層型分類法と非階層型分類法の違いは何ですか?" この質問は最初は本当に私を困惑させたので、私はそれが区別を探しているサイトをサーフィンしている他の人に違いを示すのは良い考えであると考えました。
具体的には、register_taxonomy()
関数に渡されるhierarchical
引数についての質問です。より具体的には、これの違いは何ですか:
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => false,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
この?
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => true,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
注私は先に進んで私自身の質問に答えるつもりですが、他に誰も本当に良い答えも出てこない限り、それを最高とマークしません。また、私の直感は、2つの二分法の間のすべての違いを捉えていない可能性があることを示しています。そうでない場合は、見逃したことをお知らせください。
単純な答えは、階層的分類法の用語は子用語を持つことができます。しかし、他に何が?
'hierarchical'=>false
を指定すると、WordPressがPost Tagsにも使用するメタボックス形式である次のタイプのメタボックスを取得します。
ただし、'hierarchical'=>true
を指定すると、WordPressがCategoriesにも使用するメタボックス形式である次のタイプのメタボックスを取得します。
もちろん、上記の例では、実際のサブカテゴリは多くの親カテゴリに適用されることが多いため、階層的なカテゴリ化が少し混ざり合っている場合があることも指摘しています。たとえそうであっても"多くの親"はWordPressで階層分類法が機能する方法ではありませんが、IMOを完全に分類することはほとんど不可能ですに関係なく WordPress動作します。 警告Emptor!
カスタムタクソノミーを試している初心者の場合、質問とは直接関係ありませんが(またはこの記事を書いたときに私に起こったような注意を払っていない経験豊富な開発者!) '質問に表示されるコードのようなregister_taxonomy()
をテーマのfunctions.php
ファイルに直接追加してみてください。おっとっと!
コードをfunctions.php
に直接追加すると、メタボックスは表示されますが、新しく追加された用語は保存されません(メタボックスの'heirarchical'=>true
形式では、既存の用語はチェックボックスで読み込まれません)。 )次のように、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' ),
));
}
お役に立てれば!