当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「利用者:Gblsm/関数リファレンス/register taxonomy」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(ページの白紙化)
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
{{Notice||翻訳の途中です。オリジナルは 15:55, 8 July 2014 Jdgrimes #144732 です。}}
 
<!-- http://codex.wordpress.org/Function_Reference/register_taxonomy -->
 
<!-- http://wpdocs.sourceforge.jp/関数リファレンス/register_taxonomy -->
 
{{Draft}}
 
  
<div id="Description">
 
== 説明 ==
 
</div>
 
この関数はタクソノミーを ([[カスタム分類]]として) 追加したり、上書きしたりします。
 
タクソノミーの名前、対象とするオブジェクトの名前、それから引数の配列をパラメータとします。
 
何も値を返しません。
 
 
タクソノミーの名前は注意深く選んで、他のタクソノミーや投稿、それから [http://core.trac.wordpress.org/browser/trunk/wp-includes/class-wp.php WordPress の public/private クエリ変数] と衝突しないようにします。
 
このページにある[[#Reserved_Terms|予約語セクション]]でチェックしてください。
 
特に大文字は禁止です(バージョン 3.0 では許されていましたが、バージョン 3.1 からは "Cheatin'" エラーが出ます)。
 
<!-- (This was allowed in 3.0, but not enforced until 3.1 with the "Cheatin'" error) -->
 
 
<div id="Usage">
 
== 使い方 ==
 
</div>
 
<pre>
 
<?php register_taxonomy( $taxonomy, $object_type, $args ); ?>
 
</pre>
 
 
'''この関数は <tt>init</tt> アクションを使って呼び出してください。'''
 
アクションの外から呼び出すとトラブルの元になります。
 
詳しくは [http://core.trac.wordpress.org/ticket/15568 チケット #15568] を参照してください。
 
 
カスタム投稿タイプにカスタムタクソノミー(カスタム分類)を登録するときは'''安全第一'''を心がけてください。
 
この関数でタクソノミーとオブジェクトを繋いだ後、すぐに [[関数リファレンス/register_taxonomy_for_object_type|register_taxonomy_for_object_type()]] を呼び出してください。
 
これを怠ると、<code>parse_request</code> や <code>pre_get_posts</code> の中でフィルター呼び出しが行われるときに投稿タイプが不明になってしまい、どんな結果になるかわかりません。
 
<!-- Else you could run into minetraps where the post type isn't attached inside filter callback that run during <code>parse_request</code> or <code>pre_get_posts</code>. -->
 
 
<div id="Parameters">
 
== パラメータ ==
 
</div>
 
 
{{Parameter|$taxonomy|文字列|タクソノミーの名前。英小文字とアンダースコアのみ、32文字以下(データベース構造による制限)。}}
 
{{Parameter|$object_type|配列/文字列|タクソノミーオブジェクトのオブジェクト名。オブジェクトタイプは WordPress 標準の[[投稿タイプ]]、または登録されている[[投稿タイプ#Custom_Types|カスタム投稿タイプ]]。}}
 
:標準の投稿タイプ:
 
:* '''<tt>post</tt>'''
 
:* '''<tt>page</tt>'''
 
:* '''<tt>attachment</tt>'''
 
:* '''<tt>revision</tt>'''
 
:* '''<tt>nav_menu_item</tt>'''
 
:カスタム投稿タイプ:
 
:* '''<tt>{custom_post_type}</tt>''' - カスタム投稿タイプの名前は英小文字とし、空白は禁止です。
 
:* '''<tt>null</tt>''' - 明示的に <tt>null</tt> をセットすると、タクソノミーは登録されますがどのオブジェクトにも関連付けられないため、[[管理画面]]から直接使うことはできません。その場合、カスタム投稿タイプを登録するときに 'taxonomy' パラメータを使うか( $args に入れて渡す。[[関数リファレンス/register_post_type|register_post_type()]] を参照)、それとも [[関数リファレンス/register_taxonomy_for_object_type|register_taxonomy_for_object_type()]] を使って改めて登録する必要があります。
 
 
{{Parameter|$args|配列/文字列|[[#Arguments|引数]]の配列|オプション}}
 
 
<div id="Arguments">
 
=== 引数 ===
 
</div>
 
 
{{Parameter|label|文字列|タクソノミーの'''複数形'''の名前。翻訳の対象。|オプション|''$labels->name'' で上書きされる。}}
 
 
{{Parameter|labels|配列|タクソノミーに付けるラベルの配列。デフォルトでは、階層のないタクソノミーにはタグのラベルが、階層化したタクソノミーにはカテゴリーのラベルが使われる。|オプション|空(指定しない)の場合、label の値が name に入り、name の値が singular_name に入る。}}
 
:* ''''name'''' - タクソノミーの一般的な名前(普通は複数形)。 $tax->label によって上書きされて同じになる。デフォルトは <code>_x( 'Post Tags', 'taxonomy general name' )</code> または <code>_x( 'Categories', 'taxonomy general name' )</code> 。この文字列を国際化するときは、[[I18n_for_WordPress_Developers#Disambiguation_by_context|gettext context]] を使用してカスタム投稿タイプに合わせてください。例: <code>_x('Writers', 'taxonomy general name');</code>
 
:* ''''singular_name'''' - タクソノミーのオブジェクト 1 個の名前(単数形)。デフォルトは <code>_x( 'Post Tag', 'taxonomy singular name' )</code> または <code>_x( 'Category', 'taxonomy singular name' )</code> 。この文字列を国際化するときは、[[I18n_for_WordPress_Developers#Disambiguation_by_context|gettext context]] を使用してカスタム投稿タイプに合わせてください。例: <code>_x('Writer', 'taxonomy singular name');</code>
 
:* ''''menu_name'''' - メニュー名の文字列。メニュー項目の名前になります。無指定の場合、デフォルトで ''name'' のラベルが入ります。
 
:* ''''all_items'''' - 「すべての項目」の文字列。デフォルトは <code>__( 'All Tags' )</code> または <code>__( 'All Categories' )</code>
 
:* ''''edit_item'''' - 「項目を編集」の文字列。デフォルトは <code>__( 'Edit Tag' )</code> または <code>__( 'Edit Category' )</code>
 
:* ''''view_item'''' - 「項目を表示」の文字列。デフォルトは <code>__( 'View Tag' )</code> または <code>__( 'View Category' )</code>
 
:* ''''update_item'''' - 「項目を更新」の文字列。デフォルトは <code>__( 'Update Tag' )</code> または <code>__( 'Update Category' )</code>
 
:* ''''add_new_item'''' - 「新しい項目を追加」の文字列。デフォルトは <code>__( 'Add New Tag' )</code> または <code>__( 'Add New Category' )</code>
 
:* ''''new_item_name'''' - 「新しい項目の名前」の文字列。デフォルトは <code>__( 'New Tag Name' )</code> または <code>__( 'New Category Name' )</code>
 
:* ''''parent_item'''' - 「親の項目」の文字列。これは投稿のタグのような階層化しないタクソノミーには使われません。デフォルトは null または <code>__( 'Parent Category' )</code>
 
:* ''''parent_item_colon'''' - <code>parent_item</code> と同じ文字列の後ろにコロン <code>:</code> を付けたもの。デフォルトは null または <code>__( 'Parent Category:' )</code>
 
:* ''''search_items'''' - 「項目を検索」の文字列。デフォルトは <code>__( 'Search Tags' )</code> または <code>__( 'Search Categories' )</code>
 
:* ''''popular_items'''' - 「人気の項目」の文字列。階層のあるタクソノミーには使われません。デフォルトは <code>__( 'Popular Tags' )</code> または null
 
:* ''''separate_items_with_commas'''' - タクソノミーのメタボックスで使われる「項目をコンマで区切ってください」の文字列。階層のあるタクソノミーには使われません。デフォルトは <code>__( 'Separate tags with commas' )</code> または null
 
:* ''''add_or_remove_items'''' - JavaScript が無効なときにメタボックスで使われる「項目の追加または削除」の文字列。階層のあるタクソノミーには使われません。デフォルトは <code>__( 'Add or remove tags' )</code> または null
 
:* ''''choose_from_most_used'''' - タクソノミーのメタボックスで使われる「よく使われている項目から選択」の文字列。階層のあるタクソノミーには使われません。デフォルトは <code>__( 'Choose from the most used tags' )</code> または null
 
:* ''''not_found'''' (バージョン 3.6 以降) - 項目が一つもないときにタクソノミーのメタボックスで「よく使われている項目から選択」をクリックすると表示される文字列。階層のあるタクソノミーには使われません。デフォルトは <code>__( 'No tags found.' )</code> または null
 
 
{{Parameter|public|真偽値|タクソノミーを検索可能にするかどうか。|オプション|true}}
 
<!-- If the taxonomy should be publicly queryable. -->
 
 
{{Parameter|show_ui|真偽値|タクソノミーを管理するためにデフォルトの UI を用意するかどうか。|オプション|無指定の場合、デフォルトで ''public'' 引数の値が入ります。[[Version_3.5|バージョン 3.5]] 以降は、これを <strong>false</strong> にするとタクソノミーの管理 UI を隠します。}}
 
<!-- setting this to false for attachment taxonomies will hide the UI. -->
 
 
{{Parameter|show_in_nav_menus|真偽値|true にするとナビゲーションメニューでこのタクソノミーを選択できます。|オプション|無指定の場合、デフォルトで ''public'' 引数の値が入ります。}}
 
 
{{Parameter|show_tagcloud|真偽値|タグクラウドのウィジェットがこのタクソノミーを使うかどうか。|オプション|無指定の場合、デフォルトで ''show_ui'' 引数の値が入ります。}}
 
 
{{Parameter|meta_box_cb|callback|メタボックスを表示するためのコールバック関数を指定できます。([[Version 3.8|バージョン 3.8]] 以降で利用可能)|オプション|null}}
 
'''参考:''' デフォルトは、階層のあるタクソノミーならカテゴリー用メタボックス( <tt>meta-boxes.php</tt> にある <tt>post_categories_meta_box()</tt> )、階層化しないタクソノミーならタグ用メタボックス( <tt>post_tags_meta_box()</tt> )になります。false を指定するとメタボックスを表示しません。
 
 
{{Parameter|show_admin_column|真偽値|関連付けられた投稿タイプのテーブルにタクソノミーのカラムを自動生成するかどうか。([[Version_3.5|バージョン 3.5]] 以降で利用可能)|オプション|false}}
 
 
{{Parameter|hierarchical|真偽値|カテゴリーのような階層あり(子を持つ)タクソノミーか、そうではなくタグのような階層化しないタクソノミーか。|オプション|false}}
 
 
'''参考:''' 階層のあるタクソノミーの場合、投稿の編集ページにあるタクソノミー管理ボックスに、既存カテゴリーを選択できるチェックボックス付きリストを表示します(デフォルトの投稿カテゴリーのように)。階層化しないタクソノミーの場合、投稿に付けるタクソノミーのタームをタイプ入力するための空のテキストフィールドだけを表示します(デフォルトの投稿タグのように)。
 
 
{{Parameter|update_count_callback|文字列|A function name that will be called when the count of an associated ''$object_type'', such as post, is updated. Works much like a hook.|オプション|None - but see Note, below.}}
 
 
'''Note:''' While the default is <tt><nowiki>''</nowiki></tt>, when actually performing the count update in <tt>wp_update_term_count_now()</tt>, if the taxonomy is only attached to <tt>post</tt> types (as opposed to other WordPress objects, like <tt>user</tt>), the built-in <tt>_update_post_term_count()</tt> function will be used to count only published posts associated with that term, otherwise <tt>_update_generic_term_count()</tt> will be used instead, that does no such checking.
 
 
This is significant in the case of '''attachments'''. Because an attachment is a type of <tt>post</tt>, the default <tt>_update_post_term_count()</tt> will be used. However, this may be undesirable, because this will only count attachments that are actually attached to another post (like when you insert an image into a post). This means that attachments that you simply upload to WordPress using the Media Library, but do not actually attach to another post will '''not''' be counted. If your intention behind associating a taxonomy with attachments was to leverage the Media Library as a sort of Document Management solution, you are probably more interested in the counts of unattached Media items, than in those attached to posts. In this case, you should force the use of <tt>_update_generic_term_count()</tt> by setting '_update_generic_term_count' as the value for <tt>update_count_callback</tt>.
 
 
{{Parameter|query_var|真偽値または文字列|False to disable the query_var, set as string to use custom query_var instead of default which is $taxonomy, the taxonomy's "name".|オプション|$taxonomy}}
 
 
'''Note:''' The query_var is used for direct queries through WP_Query like <code>new WP_Query(array('people'=>$person_name))</code> and URL queries like <code>/?people=$person_name</code>. Setting query_var to false will disable these methods, but you can still fetch posts with an explicit WP_Query taxonomy query like <code>WP_Query(array('taxonomy'=>'people', 'term'=>$person_name))</code>.
 
 
{{Parameter|rewrite|真偽値/配列|Set to false to prevent automatic URL rewriting a.k.a. "pretty permalinks". Pass an ''$args'' array to override default URL settings for permalinks as outlined below:|オプション|true}}
 
:* ''''slug'''' - Used as pretty permalink text (i.e. /tag/) - defaults to $taxonomy (taxonomy's name slug)
 
:* ''''with_front'''' - allowing permalinks to be prepended with front base - defaults to true
 
:* ''''hierarchical'''' - true or false allow hierarchical urls (implemented in [[Version 3.1]]) - defaults to false
 
:* ''''ep_mask'''' - Assign an endpoint mask for this taxonomy - defaults to EP_NONE. For more info see [http://make.wordpress.org/plugins/2012/06/07/rewrite-endpoints-api/ this Make WordPress Plugins summary of endpoints].
 
 
'''Note:''' You may need to flush the rewrite rules after changing this. You can do it manually by going to the Permalink Settings page and re-saving the rules -- you don't need to change them -- or by calling <tt>$wp_rewrite->flush_rules()</tt>. You should only flush the rules once after the taxonomy has been created, not every time the plugin/theme loads.
 
 
{{Parameter|capabilities|配列|An array of the capabilities for this taxonomy.|オプション}}
 
:* ''''manage_terms'''' - 'manage_categories'
 
:* ''''edit_terms'''' - 'manage_categories'
 
:* ''''delete_terms'''' - 'manage_categories'
 
:* ''''assign_terms'''' - 'edit_posts'
 
 
{{Parameter|sort|真偽値|Whether this taxonomy should remember the order in which terms are added to objects.|オプション}}
 
 
{{Parameter|_builtin|真偽値|Whether this taxonomy is a native or "built-in" taxonomy. '''Note: this Codex entry is for documentation - core developers recommend you don't use this when registering your own taxonomy'''|not for general use|false}}
 
 
<div id="Example">
 
== 例 ==
 
</div>
 
 
An example of registering a two taxonomies, genres and writers, for the post type called "book" (uses [[Version 3.1]] arguments):
 
 
Note: You can define custom taxonomies in a themes's <code>functions.php</code> template file:
 
 
<pre>
 
<?php
 
// hook into the init action and call create_book_taxonomies when it fires
 
add_action( 'init', 'create_book_taxonomies', 0 );
 
 
// create two taxonomies, genres and writers for the post type "book"
 
function create_book_taxonomies() {
 
// Add new taxonomy, make it hierarchical (like categories)
 
$labels = array(
 
'name'              => _x( 'Genres', 'taxonomy general name' ),
 
'singular_name'    => _x( 'Genre', 'taxonomy singular name' ),
 
'search_items'      => __( 'Search Genres' ),
 
'all_items'        => __( 'All Genres' ),
 
'parent_item'      => __( 'Parent Genre' ),
 
'parent_item_colon' => __( 'Parent Genre:' ),
 
'edit_item'        => __( 'Edit Genre' ),
 
'update_item'      => __( 'Update Genre' ),
 
'add_new_item'      => __( 'Add New Genre' ),
 
'new_item_name'    => __( 'New Genre Name' ),
 
'menu_name'        => __( 'Genre' ),
 
);
 
 
$args = array(
 
'hierarchical'      => true,
 
'labels'            => $labels,
 
'show_ui'          => true,
 
'show_admin_column' => true,
 
'query_var'        => true,
 
'rewrite'          => array( 'slug' => 'genre' ),
 
);
 
 
register_taxonomy( 'genre', array( 'book' ), $args );
 
 
// Add new taxonomy, NOT hierarchical (like tags)
 
$labels = array(
 
'name'                      => _x( 'Writers', 'taxonomy general name' ),
 
'singular_name'              => _x( 'Writer', 'taxonomy singular name' ),
 
'search_items'              => __( 'Search Writers' ),
 
'popular_items'              => __( 'Popular Writers' ),
 
'all_items'                  => __( 'All Writers' ),
 
'parent_item'                => null,
 
'parent_item_colon'          => null,
 
'edit_item'                  => __( 'Edit Writer' ),
 
'update_item'                => __( 'Update Writer' ),
 
'add_new_item'              => __( 'Add New Writer' ),
 
'new_item_name'              => __( 'New Writer Name' ),
 
'separate_items_with_commas' => __( 'Separate writers with commas' ),
 
'add_or_remove_items'        => __( 'Add or remove writers' ),
 
'choose_from_most_used'      => __( 'Choose from the most used writers' ),
 
'not_found'                  => __( 'No writers found.' ),
 
'menu_name'                  => __( 'Writers' ),
 
);
 
 
$args = array(
 
'hierarchical'          => false,
 
'labels'                => $labels,
 
'show_ui'              => true,
 
'show_admin_column'    => true,
 
'update_count_callback' => '_update_post_term_count',
 
'query_var'            => true,
 
'rewrite'              => array( 'slug' => 'writer' ),
 
);
 
 
register_taxonomy( 'writer', 'book', $args );
 
}
 
?>
 
</pre>
 
 
<div id="Basic_Example">
 
== 基本的な例 ==
 
</div>
 
 
<pre>
 
<?php
 
add_action( 'init', 'create_book_tax' );
 
 
function create_book_tax() {
 
register_taxonomy(
 
'genre',
 
'book',
 
array(
 
'label' => __( 'Genre' ),
 
'rewrite' => array( 'slug' => 'genre' ),
 
'hierarchical' => true,
 
)
 
);
 
}
 
?>
 
</pre>
 
 
Note: If you want to ensure that your custom taxonomy behaves like a tag, you must add the option 'update_count_callback' => '_update_post_term_count'.  Not doing so will result in multiple comma-separated items added at once being saved as a single value, not as separate values. This can cause undue stress when using get_the_term_list and other term display functions.
 
 
<div id="Reserved_Terms">
 
== 予約語 ==
 
</div>
 
 
Avoiding the following reserved terms is particularly important if you are passing the term through the $_GET or $_POST array.  Doing so can cause WordPress to respond with a 404 error without any other hint or explanation. 
 
 
* attachment
 
* attachment_id
 
* author
 
* author_name
 
* calendar
 
* cat
 
* category
 
* category__and
 
* category__in
 
* category__not_in
 
* category_name
 
* comments_per_page
 
* comments_popup
 
* customize_messenger_channel
 
* customized
 
* cpage
 
* day
 
* debug
 
* error
 
* exact
 
* feed
 
* hour
 
* link_category
 
* m
 
* minute
 
* monthnum
 
* more
 
* name
 
* nav_menu
 
* nonce
 
* nopaging
 
* offset
 
* order
 
* orderby
 
* p
 
* page
 
* page_id
 
* paged
 
* pagename
 
* pb
 
* perm
 
* post
 
* post__in
 
* post__not_in
 
* post_format
 
* post_mime_type
 
* post_status
 
* post_tag
 
* post_type
 
* posts
 
* posts_per_archive_page
 
* posts_per_page
 
* preview
 
* robots
 
* s
 
* search
 
* second
 
* sentence
 
* showposts
 
* static
 
* subpost
 
* subpost_id
 
* tag
 
* tag__and
 
* tag__in
 
* tag__not_in
 
* tag_id
 
* tag_slug__and
 
* tag_slug__in
 
* taxonomy
 
* tb
 
* term
 
* theme
 
* type
 
* w
 
* withcomments
 
* withoutcomments
 
* year
 
 
<div id="Changelog">
 
== 変更履歴 ==
 
</div>
 
 
* [[Version_3.6|3.6.0]]:
 
** Add '<tt>not_found</tt>' label.
 
* [[Version_3.5|3.5.0]]:
 
** Setting '<tt>show_ui</tt>' to false hides UI for attachment taxonomies.
 
** Add '<tt>show_admin_column</tt>' to allow automatic creation of taxonomy columns on associated post types.
 
* Since: [[Version 2.3|2.3.0]]
 
 
<div id="Source_File">
 
== ソースファイル ==
 
</div>
 
 
<tt>register_taxonomy()</tt> is located in {{Trac|wp-includes/taxonomy.php}}.
 
 
<div id="Resources">
 
== 参考サイト ==
 
</div>
 
 
* [http://generatewp.com/taxonomy/ WordPress Taxonomy Generator]
 
 
<div id="Related">
 
== 関連情報 ==
 
</div>
 
 
[http://codex.wordpress.org/Function_Reference/register_post_type register_post_type()] 
 
 
{{Tag Footer}}
 
 
[[Category:Functions]]
 
[[Category:New_page_created]]
 
 
[[en:Function Reference/register_taxonomy]]
 
[[zh-hans:函数参考/register_taxonomy]]
 

2014年8月21日 (木) 15:37時点における最新版