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 ]
コメント