説明
パラメータ
- $post_typeカスタム投稿タイプ名を指定([4.2.0]タイプ名は1~20文字の範囲)。
- $argsカスタム投稿タイプの属性を連想配列または文字列で指定(省略時はarray())。
返り値
カスタム投稿タイプ情報またはエラー情報のオブジェクトを返す。注意
【重要】はじめてカスタム投稿タイプを登録した際は、そのカスタム投稿タイプ用のパーマリンクが設定されるので、 flush_rewrite_rules関数を呼び出して、その設定を保存する必要がある(保存しない場合、そのページへのアクセスは404エラーになる)。
パラメータ$argsに指定する連想配列のデフォルト値は次の通り。
array(
'labels' => array(),
'description' => '',
'publicly_queryable' => null,
'exclude_from_search' => null,
'capability_type' => 'post',
'capabilities' => array(),
'map_meta_cap' => null,
'hierarchical' => false,
'public' => false,
'rewrite' => true,
'has_archive' => false,
'query_var' => true,
'supports' => array(),
'register_meta_box_cb' => null,
'taxonomies' => array(),
'show_ui' => null,
'menu_position' => null,
'menu_icon' => null,
'can_export' => true,
'show_in_nav_menus' => null,
'show_in_menu' => null,
'show_in_admin_bar' => null,
'delete_with_user' => null,
);
'supports'には、投稿ページで表示するウィジェットを指定。なお'thumbnail'は、 add_theme_support( 'post-thumbnails' )を呼び出さないと有効にならない。また、'register_meta_box_cb'には、カスタム投稿タイプ専用のウィジェットを表示するコールバック関数を指定できる。
[4.7.0]REST API対応として、'show_in_rest'(ブール値)、'rest_base'(文字列)、'rest_controller_class'(文字列)が追加された。これらはバージョン4.7.0では明示的に指定しなければならず、カスタム投稿タイプを利用している場合は注意が必要である。カスタム投稿タイプの投稿情報をREST APIで利用可能にする場合は'show_in_rest'にtrueを、'rest_base'に投稿タイプ名を、'rest_controller_class'に'WP_REST_Posts_Controller'か自身で拡張したクラス名を指定する。
またパラメータ$args['labels']に指定する連想配列のデフォルト値は、カスタム投稿タイプの属性指定によって'投稿'か'ページ'のどちらかが適用される。
array(
'name' => array( _x('Posts', 'post type general name'), _x('Pages', 'post type general name') ),
'singular_name' => array( _x('Post', 'post type singular name'), _x('Page', 'post type singular name') ),
'add_new' => array( _x('Add New', 'post'), _x('Add New', 'page') ),
'add_new_item' => array( __('Add New Post'), __('Add New Page') ),
'edit_item' => array( __('Edit Post'), __('Edit Page') ),
'new_item' => array( __('New Post'), __('New Page') ),
'view_item' => array( __('View Post'), __('View Page') ),
'search_items' => array( __('Search Posts'), __('Search Pages') ),
'not_found' => array( __('No posts found.'), __('No pages found.') ),
'not_found_in_trash' => array( __('No posts found in Trash.'), __('No pages found in Trash.') ),
'parent_item_colon' => array( null, __('Parent Page:') ),
'all_items' => array( __( 'All Posts' ), __( 'All Pages' ) )
);
使用例
- 'tool'というカスタム投稿タイプを登録する。
<?php $labels = array( 'name' => '道具', 'singular_name' => '道具', 'add_new' => '新しい道具', 'add_new_item' => '新しい道具を追加', 'edit_item' => '道具を編集', 'new_item' => '新しい道具を追加', 'search_items' => '道具を検索', 'view_item' => '道具を表示', ); $args = array( 'labels' => $labels, 'publicly_queryable' => true, 'capability_type' => 'post', 'public' => true, 'rewrite' => true, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'thumbnail', 'page-attributes' ), 'register_meta_box_cb' => 'meta_box_cb_tool', 'taxonomies' => array( 'category', 'post_tag' ), 'show_ui' => true, 'menu_position' => 5, ); register_post_type( 'tool', $args ); flush_rewrite_rules( false ); ?>
フィルター
実行するフィルターはありません。アクション
[3.3.0]本関数の終了する前にregistered_post_typeアクションを呼び出す。パラメータ$post_typeには本関数が受け取ったカスタム投稿タイプ名が、$argsには4.6.0より前のバージョンでは本関数内で補完されたオブジェクトが、4.6.0以降では登録した投稿タイプ情報(オブジェクト)が格納されている。do_action( 'registered_post_type', $post_type, $args );
do_action( "registered_post_type_{$post_type}", $post_type, $post_type_object );
ソースファイル
/wp-includes/post.php最終更新 : 2022年06月01日 12:08
関連
お勧め
Emojin:プラグイン作ってみました(2015年3月21日 更新)
ちょっと前のTLでiOSの絵文字を含んだ投稿を保存すると、絵文字以降の文章がすべて消えた状態で保存されるといったツイートを見かけた。少し検索してみると、MySQLのデータベースの文字セットが「utf8」の場合、iOSの絵文字のような4バイトの文字を正常に保存できず、それ以降の文章も保存されないというものらしい。対処方法としてデータベースの文字セットを「utf8mb4」に変更するのが有効らしいのだが、他に回避策がないか考えてみた。Twenty Seventeenのフォントサイズを変更してみた(2021年12月15日 更新)
先日投稿した「続テーマを変更せずにWebフォントを使ってみた」では、テーマ「Twenty Seventeen」でもWebフォントを使えるようにした。その際、「Twenty Seventeen」のフォントサイズが少し小さく感じたので、今回はフォントサイズを調整してみた。
HTML entities button:プラグイン作ってみました(2021年4月28日 更新)
以前投稿した「HTML編集モードに定型文ボタンを追加する」をアレンジして、HTML編集モードに特殊文字(HTMLエンティティ)を挿入できるボタン、顔文字を挿入できるボタン、過去の投稿ページのリンクを挿入できるボタンを追加するプラグインを作ってみました。HTML編集モードの作業効率を向上させるプラグインです。2.1.0では「Dashiconsの挿入」を追加しました。HTML編集モードをメインに使用されている方は、お試しあれ。5.7の機能拡張:エクスポートファイルに更新日時が追加ほか(2021年2月23日 更新)
WordPressはサイト移行を支援する機能として投稿情報のエクスポート機能を備えている。5.7ではこのエクスポート機能が改良され、更新日時情報が追加されるようだ。
query_posts(WP_Queryクラス)でカスタムフィールドを使う(2011年9月15日 更新)
先週3回にわたってtax_queryパラメータを使ったカテゴリーや投稿タグ、投稿フォーマットの絞り込みを整理したが、その途中で目に付いたのが'meta_query'パラメータ。この'meta_query'パラメータは、カスタムフィールドの絞り込み条件を指定するためのもので、3.2で登場した新しいパラメータのようだ。