【WordPress開発】カスタム投稿タイプを作成するプラグイン

WordPressカスタム投稿タイプを作成するプラグインの作り方を解説します。

カスタム投稿タイプとは

カスタム投稿タイプとは、「固定ページ」「投稿」以外の「投稿」画面を作成する機能です。
以下のように「register_post_type関数」を用いることで、カスタム投稿タイプを作成できます。


「register_post_type」の使い方

register_post_type( $post_type, $args )
引数 概要
$post_type カスタム投稿タイプの名前を指定。ただし、予約済みの名前(postなどWordPressのシステムが標準で使用している名前)は付けられない。また、推奨される命名規則がある。
$args 配列で設定項目を渡す。直接記述してもいいが、関数外で別途$argsという変数を定義して渡すのが一般的。

「$post_type」で渡す項目

$post_typeには、「カスタム投稿タイプの名前」を指定します。
ただし、以下の予約済の名前(postなどWordPressのシステムが標準で使用している名前)は付けられません。

予約済の名前 補足
post 投稿
page 固定ページ
attachment 添付ファイル
revision リビジョン
nav_menu_item ナビゲーションメニュー

また、「カスタム投稿タイプの名前」は以下の命名規則に基づくことが推奨されています。

  • 20文字以内。
  • 大文字、空白は使用禁止。
  • 単語の区切りにはアンダースコアバー(my_post)を用いる。
  • ハイフン(-)は使用禁止(管理画面に列を追加できなくなる)。
  • wp_は使用禁止。

「$args」で渡す項目

register_post_typeの第二引数「$args」には、「label」「labels」「その他」の3つを渡します。

label

管理画面上での表示名を指定します。
より、細かく設定したい場合は、後述のlabelsを使います。
labelsのnameを設定した場合、labelsのnameで設定した表示名が優先されます。

「$args」のlabels

labelsは、管理画面上に表示する名前を細かく設定します。

項目 内容 初期値
name メインの表示名(labelを上書きする) 投稿
menu_name メニュー内での表示名 name
all_items 一覧の表示名 name
edit_item 編集画面のタイトル 投稿を編集
new_item 新規作成画面のタイトル 新規投稿を追加
view_item 表示画面のタイトル 投稿を表示
search_items 検索ボタンの表示名 投稿を検索
not_found 投稿がない時の表示名 投稿が見つかりませんでした。
not_found_in_trash ゴミ箱に投稿がない時の表示名 ゴミ箱内に投稿が見つかりませんでした。
parent_item_colon 親の投稿表示名 親投稿:

「$args」のその他

最も重要な箇所。管理画面のどこに何を配置するか、エディタを旧式にするか、Gutenbergにするか(show_in_rest)といった機能的なカスタマイズができます。

public

管理画面上にカスタム投稿タイプを表示し、投稿内容を公開する。
「‘public’ => true」にすると、「show_ui」「show_in_nav_menus」「show_in_menu」「show_in_admin_bar」「publicly_queryable」がtrueに設定される。
基本的にはtrueで設定しておく。

項目 内容
show_ui 管理画面上のユーザーインターフェースを作成。
show_in_nav_menus ナビゲーションメニュ(グロナビ)で選択可能にする(「外観」→「メニュー」から設定可能になる)する。
show_in_menu 管理画面に、カスタム投稿タイプを表示show_uiの引数が適用)。
show_in_admin_bar 管理画面上部のバーに表示 (show_in_menuの引数が適用)。
publicly_queryable フロントエンドでpost_typeクエリを実行可能にする。パラメータを有効化する(プレビュー機能などに使用)。

menu_position

menu_positionは、カスタム投稿タイプのメニュー内での表示位置を数値で指定できます。

場所
5 投稿の下
10 メディアの下
15 リンクの下
20 固定ページの下
25 コメントの下(デフォルト)
60 最初の区切りの下
65 プラグインの下
70 ユーザーの下
75 ツールの下
80 設定の下
100 二つ目の区切りの下

メニューアイコン(menu_icon)

menu_iconは、メニューのアイコンを変更します。

例えば、「’menu_icon’ => ‘dashicons-video-alt’,」にするとビデオマークになります(デフォルトはピンマーク)。
使えるアイコンはhttps://developer.wordpress.org/resource/dashicons/#editor-paste-wordで確認できます。

エディタの変更(show_in_rest)

デフォルトでは旧式のエディタが適用されます。
「‘show_in_rest’ => true」でGutenbergを適用できます。
これをGutenberg(show_in_rest)や任意の項目のみの表示(supports)に変更することができる。

編集項目の変更(supports)

supportsで表示する編集項目を変更できます。
どの内容を表示するかは配列で指定します。

内容
title タイトルの編集
editor 本文編集エディタ
author 作成者
thumbnail サムネイル
excerpt 抜粋
trackbacks トラックバック送信
custom-fields カスタムフィールド
comments コメント
revisions リビジョンの保存
page-attributes メニューの順序。「親〜」を表示するには hierarchical が true 必須
post-formats 投稿のフォーマットを追加

'supports' => [ 'title', 'editor', 'thumnail', 'excerpt' ],

パーマリンクのカスタム投稿タイプ名を変更(rewrite)

パーマリンクのスラッグ名はカスタム投稿タイプの$post_typeの値が含まれます。
仮に「$post_type」が「product」なの場合パーマリンクは「https://xxx.com/product/xxxx」となります。

rewriteは、このスラッグ名を変更することができます。

内容
slug 使用するslugを指定。デフォルトは$post_typeの値。
with_front falseなら「/slug/」、trueなら「/$post_type/slug/」となる。
feeds フィードのパーマリンク構造を作成する(初期値はhas_archiveの引数)。
pages パーマリンク構造をページ送りにする(初期値はtrue)。
ep_mask エンドポイントを割り当て

$post_typeの値が「product」の場合、パーマリンクは「https://xxx.com/seihin/xxxx」となります。

'rewrite' => [
  'slug' => 'seihin',
  'with_front' => false
]

関連ページ

関連ページ

404 NOT FOUND | アルゴリズム速報

コメント