WordPress

WordPress カスタム投稿タイプを追加する方法

WordPress でカスタム投稿タイプを追加する方法を紹介します。
例えば、投稿とは別に製品情報を登録できるような投稿タイプを追加したい場合に便利な方法です。

カスタム投稿タイプとは?

WordPress では投稿とは別に任意の投稿タイプのコンテンツを追加することができます。これを属にカスタム投稿タイプといいます。

カスタム投稿タイプの追加方法

カスタム投稿タイプを追加するには、functions.php に次のコードを追加します。

/*【カスタム投稿設定】================================================ */
add_action( 'init', 'custom_post_type' );
function custom_post_type() {
/*【カスタム投稿タイプの追加】 */
register_post_type( 'products', // 投稿タイプのスラッグの指定
array(
'labels' => array(
'name' => __( 'PRODUCTS' ), // メニューに表示されるラベル
'singular_name' => __( 'PRODUCTS' ), // 単体系のラベル
'add_new' => _x('新しく登録する', 'PRODUCTS'), // 新規追加のラベル
'add_new_item' => __('登録する') // 新規項目追加のラベル
),
'public' => true, // 投稿タイプをパブリックにする
'has_archive' => true, // アーカイブを有効にする
'hierarchical' => false, // ページ階層の指定
'menu_position' =>5, // 管理画面上の配置指定
'supports' => array('title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes') // サポートの指定
)
);
}

管理画面に表示される文言などを細かく編集したい場合は、次のように細かく設定する事もできます。

/* 【カスタム投稿】カスタム投稿タイプを追加 */
add_action( 'init', 'register_my_cpts' ); // register_my_cpts は固有の名称に変更してください
function register_my_cpts() { // register_my_cpts は固有の名称に変更してください
$labels = array(
"name" => "カスタムポスト名",
"singular_name" => "カスタムポスト名",
"menu_name" => "カスタムポスト名",
"all_items" => "すべての項目",
"add_new" => "新規追加",
"add_new_item" => "新規項目追加",
"edit" => "編集",
"edit_item" => "項目を編集",
"new_item" => "新規項目",
"view" => "表示",
"view_item" => "項目を表示",
"search_items" => "検索項目",
"not_found" => "見つかりません",
"not_found_in_trash" => "ゴミ箱にはありません",
"parent" => "親",
);
$args = array(
"labels" => $labels,
"description" => "",
"public" => true,
"show_ui" => true,
"has_archive" => true,
"show_in_menu" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "shop/product", "with_front" => true ), // 出力されるURLを調整する場合に入力
"query_var" => true,
"supports" => array( "title", "editor", "excerpt", "trackbacks", "custom-fields", "comments", "revisions", "thumbnail", "author", "page-attributes", "post-formats" ),
);
register_post_type( "product", $args );
}

階層構造を持たせる方法

カスタム投稿タイプに固定ページのような階層構造を持たせるには hierarchical を編集します。
前述したコードの hierarchicalfalse から true に変更します。

'hierarchical' => true, // ページの階層化を有効にする

編集ページに親を選択するボックスを表示するためには supports パラメータに page-attributes を含める必要があります。
次のコードは supportspage-attributes を含めた例です。

'supports' => array('title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes') // サポートの指定

まとめ

WordPress でカスタム投稿タイプを追加する方法を紹介しました。

合わせて読みたい関連記事