register_post_type

(2.9.0以降)
register_post_type - カスタム投稿タイプを登録する

説明

object register_post_type( string $post_type [ , mixed $args = array() ] )
カスタム投稿タイプを登録する。

パラメータ

  • $post_type
    カスタム投稿タイプ名を指定。
  • $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 );
    ?>

フィルター

実行するフィルターはありません。

アクション

本関数の終了直前にregistered_post_typeアクションを実行する。パラメータ$post_typeには本関数が受け取ったカスタム投稿タイプ名が、$argsには4.6.0より前のバージョンでは本関数内で補完されたオブジェクトが、4.6.0以降では登録した投稿タイプ情報(オブジェクト)となる。
do_action( 'registered_post_type', $post_type, $args );

ソースファイル

/wp-includes/post.php

関連

お勧めコンテンツ

3.6リリース直前チェック(2013年7月26日 登録)

$wpdbは、WordPressのデータベースにアクセスする際に使用できる便利なオブジェクト。独自テーブルの利用やデータ検索の最適化など、標準提供される関数では実現できないことを手助けしてくれる。そんな$wpdbのescapeメソッドが3.6で非推奨(deprecated)になる。

ツイート引用が簡単になる仕組み(2012年6月8日 登録)

WordPress 3.4では、投稿記事の中にツイートのURLを記述するだけで、投稿ページにそれっぽい表示をしてくれるようになる。ちょっと気になったので、その仕組みを追っかけてみた。

Slightly troublesome permalink:プラグイン作ってみました(2012年2月9日 登録)

カテゴリーを含んだパーマリンクを設定している場合、複数のカテゴリーを指定した投稿記事のパーマリンクのURLに目的のカテゴリーとは異なるカテゴリーが適用された経験はないだろうか。このプラグインは、パーマリンクに適用されるカテゴリーをコントロールし、希望通りのパーマリンクを設定します。

標準で使用できる数少ないショートコード[caption]とは(2011年5月7日 登録)

画像をアップロードして「投稿に追加」ボタンをクリックすると、投稿記事内にリンク付きのimgタグか、ショートコードのが挿入される。ここではそれらの書式を整理する。

Emojin:プラグイン作ってみました(2014年8月23日 登録)

ちょっと前のTLでiOSの絵文字を含んだ投稿を保存すると、絵文字以降の文章がすべて消えた状態で保存されるといったツイートを見かけた。少し検索してみると、MySQLのデータベースの文字セットが「utf8」の場合、iOSの絵文字のような4バイトの文字を正常に保存できず、それ以降の文章も保存されないというものらしい。対処方法としてデータベースの文字セットを「utf8mb4」に変更するのが有効らしいのだが、他に回避策がないか考えてみた。

最終更新日時 : 2017-01-11 16:33