【プラグインなし】WordPressでカスタム投稿タイプを作成する方法

今回はプラグインなしでWordPressでカスタム投稿タイプを作成する方法を紹介します。

教えてくだされ

目次

まずは完成品

下記をfunctions.phpの最下部にコピペすればとりあえず動きます。

このあと詳しく解説しますね。

add_action( 'init', 'create_my_custom_post_type' );

function create_my_custom_post_type() {
    $args = array(
        'public' => true,
        'label'  => 'My Custom Posts',
    );

    register_post_type( 'my_custom_post', $args );
}

コードの解説

さて、解説になります。

まず1行目の

add_action( 'init', 'create_my_custom_post_type' );

は、アクションフックを使って、どのタイミングで以降のプログラムが動くか定義しています。

引数一つ目はアクションが発動するタイミングそのもの、投稿タイプの作成のときはinitが基本なので今回はinitです。

引数二つ目は関数の名前が入ります。ここは各自でわかりやすいものをつけてもらって大丈夫です。

(続くfunctionの名前と同じにしておいてください)

それから続いて、

function create_my_custom_post_type() {
    $args = array(
        'public' => true,
        'label'  => 'My Custom Posts',
    );

の部分では、create_my_custom_post_type()という関数を定義しています。

難しそうに見えますが、カスタム投稿タイプを作成する作業を関数にしてるだけです。

$args = array()の中には必要な設定情報を書き込むので、上記のコードでは必要最低限の要素を入れています。

publicは投稿タイプを公開するかどうか

labelは管理画面のメニューに表示する投稿タイプの名前です。

そして最後の

register_post_type( 'my_custom_post', $args );

は、カスタム投稿タイプをWordPressに登録しています。

register_post_type()は二つの引数を受け取っていますね。

my_custom_postは、カスタム投稿タイプのスラッグ名です。

そして$argsは、ここまでで設定した投稿タイプのパラメータが入っています。

以上でカスタム投稿タイプの作成ができるはずです。試してみてください。

register_post_typeの受けとる引数
第1引数:カスタム投稿タイプのスラッグ(内部的な名前)
第2引数:カスタム投稿タイプの引数(パラメータ)を指定する配列

細かい話

さらに詳しく知りたいぞ!という方向けの内容になります。

カスタム投稿タイプの詳細設定

実はカスタム投稿タイプはもっと詳細にlabelsargsを設定することができます。

コードにするとこんな感じ。(説明文にすると長いので、コードの中に各項目の解説をコメントで入れています)

// 'init'アクションフックを利用し、WordPressが初期化される時にカスタム投稿タイプを作成する
add_action( 'init', 'create_my_custom_post_type' );

function create_my_custom_post_type() {
    // ラベルを設定。これらはダッシュボードなどの管理画面で表示される。
    $labels = array(
        'name'               => _x( 'My Custom Posts', 'post type general name' ), // 投稿タイプの一般名。通常は複数形
        'singular_name'      => _x( 'My Custom Post', 'post type singular name' ), // 投稿タイプの単数形名
        'menu_name'          => _x( 'My Custom Posts', 'admin menu' ), // 管理画面のメニューに表示される名前
        'name_admin_bar'     => _x( 'My Custom Post', 'add new on admin bar' ), // 管理画面の上部バー(+新規メニュー)に表示される名前
        'add_new'            => _x( 'Add New', 'my_custom_post' ), // 新規追加" リンクのテキスト
        'add_new_item'       => __( 'Add New My Custom Post' ), // 新規アイテム作成ページの見出しテキスト
        'new_item'           => __( 'New My Custom Post' ), //  "新規" リンクのテキスト
        'edit_item'          => __( 'Edit My Custom Post' ), // 編集ページの見出しテキスト
        'view_item'          => __( 'View My Custom Post' ), // "表示" リンクのテキスト
        'all_items'          => __( 'All My Custom Posts' ), // 管理メニューのリンクテキスト
        'search_items'       => __( 'Search My Custom Posts' ), // 検索ボタンのテキスト
        'parent_item_colon'  => __( 'Parent My Custom Posts:' ), // 親アイテムのテキスト。階層型の投稿タイプにのみ適用される
        'not_found'          => __( 'No my_custom_posts found.' ), //  "見つかりません" メッセージのテキスト
        'not_found_in_trash' => __( 'No my_custom_posts found in Trash.' ) // "ゴミ箱にはありません" メッセージのテキスト
    );

    // カスタム投稿タイプのパラメータを設定。
    $args = array(
        'labels'             => $labels, // 上で定義したラベルを使用
        'public'             => true, // 投稿タイプを公開
        'publicly_queryable' => true, // クエリにこの投稿タイプを含める
        'show_ui'            => true, // ダッシュボードにこの投稿タイプのUIを表示する
        'show_in_menu'       => true, // ダッシュボードのメニューにこの投稿タイプを表示する
        'query_var'          => true, // クエリ変数にこの投稿タイプを含める
        'rewrite'            => array( 'slug' => 'my_custom_post' ), // パーマリンクの設定
        'capability_type'    => 'post', // 権限タイプを指定
        'has_archive'        => true, // アーカイブページを有効にする
        'hierarchical'       => false, // 階層型を指定します(ページのように親子関係を持たせる場合はtrueにします)
        'menu_position'      => null, // メニューの位置を指定します(nullの場合、デフォルトの位置になります)
        'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ) // サポートを有効にする機能

必ず役に立つので、このページをブックマークして、気になったら読みに来てください!

さいごに

カスタム投稿タイプはWordPressを扱ううえで100%必要な知識です。

Web制作、ホームページ制作をされる方、デザイナーになりたい方も絶対に覚えておきましょう。

また、プラグインでお手軽にカスタム投稿タイプを追加できるものもありますが、

あまりプラグインに頼りすぎるのはセキュリティリスク的にも、自分の成長的にもあまりよくありません。

せっかくなのでプラグインなしパターンを使いこなせるようになっちゃいましょう。

これはできるようになっといた方がええな

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次