こんにちは!!ようこそ、当ブログgcbgardenへ。管理人のsakurabaaa(@sakurabaaa_g)です。
今回は「カスタム投稿タイプ」を追加する方法をまとめます。
参考投稿タイプ
もくじ
カスタム投稿タイプとは
カスタム投稿タイプは「投稿」ページのカスタマイズ版のようなものです。
ワードプレスの関数「register_post_type」を使うことで実装ができます。
カスタム投稿タイプはオリジナルの投稿を作るイメージ
ワードプレスの投稿方法には、「固定ページ」と「投稿」が用意されています。
カスタム投稿タイプは「投稿」にちょこっとアレンジを加えた機能のようなものです。
例えば、ブログ記事とは別にニュースリリースだけを管理したいページを作りたいといった要望に答えることができます。
カスタム投稿タイプ(register_post_type)の実装
Codexを参考に実装したコードがこちらです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function create_post_type(){ register_post_type('news', //スラッグ array( 'labels' => array( 'name' => '新着情報1', //管理画面サイドバーに表示される名前 'singular_name' => '新着情報2', //管理画面などで表示する名前(単数形)(よくわからない) 'add_new' => '新しい新着情報3', //「投稿」でいうところの「新規追加」 'add_new_item' => '新しい新着情報を追加4', //新規に記事を作成したときのページタイトル 'edit_item' => '新着情報を編集5', //公開済み、または下書きの記事のページタイトル 'new_item' => '新しい新着情報を追加6', //よくわからない 'search_items' => '新着情報を検索7', //検索ボタンの名前 'view_item' => '新着情報を表示8', //編集ページのツールバーのラベル ), 'publicly_queryable' => true, 'capability_type' => 'post', 'public' => true, 'rewrite' => true, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'thumbnail', 'page-attributes' ), 'taxonomies' => array( 'category', 'post_tag' ), 'show_ui' => true, 'menu_position' => 5, ) ); } add_action( 'init', 'create_post_type' ); |
そして、作成したカスタム投稿タイプはこのようになりました。
試しに、記事を作ってみました。
公開をクリックし記事の閲覧をしようとした際に404のメッセージが、、、
なにか設定のミスをしたのか?と思い、調べてみると、、
register_post_type 404
ググってみると以下の手順で解決できることがわかりました。
設定>>パーマリンク設定>>変更を保存
「変更を保存」をクリックします。
再び記事にURLへアクセスすると、、
無事ページの閲覧ができました。
【重要】はじめてカスタム投稿タイプを登録した際は、そのカスタム投稿タイプ用のパーマリンクが設定されるので、 flush_rewrite_rules関数を呼び出して、その設定を保存する必要がある(保存しない場合、そのページへのアクセスは404エラーになる)。
どこに書けばいいの?
「register_post_type」で検索すると上の方に出てくる情報は「functions.php」に記述すると意見が多かったです。
とりあえずわたしも「functions.php」に記述して挙動を確認してみました。
カスタム投稿タイプのプラグイン化
Codexをよく読んでみるとプラグインにすることを推奨しているみたいでした。
テーマを切り替えたときにサイトが壊れるのを防ぐため、カスタム投稿タイプをプラグインとして定義するのが良いでしょう。もっと良いのは Must Use Plugins /en にすることです。こうすればユーザーに特定のテーマを強制しなくて済みます。
ここで新しい言葉「Must Use Plugins」を見つけました!!
Must Use Pluginsとは
【英】
Must-use plugins (a.k.a. mu-plugins) are plugins installed in a special directory inside the content folder and which are automatically enabled on all sites in the installation. Must-use plugins do not show in the default list of plugins on the Plugins page of wp-admin – although they do appear in a special Must-Use section – and cannot be disabled except by removing the plugin file from the must-use directory, which is found in wp-content/mu-plugins by default.【日】
必須プラグイン(別名mu-plugins)は、コンテンツフォルダ内の特別なディレクトリにインストールされ、インストール内のすべてのサイトで自動的に有効になるプラグインです。必須のプラグインは、wp-adminのプラグインページのデフォルトのプラグインリストには表示されません – ただし、必須の必須セクションには表示されますが、必須のディレクトリからプラグインファイルを削除しない限り無効にできません。これはデフォルトでwp-content / mu-pluginsにあります。(by google-sensei)
ということで、「wp-content / mu-plugins」に書けばいいみたいですね。
また、強制的に有効になるみたいなので、必須な機能は mu-plugins に納めてしまえばいいことがわかりました!
register_post_type の引数について
labels
上のコードの記載通りで、主に管理画面上で表示されるラベルを指定します。
publicly_queryable
フロントエンドで post_type クエリが実行可能かどうか-投稿でもページでも出力できる(true)
capability_type
カスタム投稿タイプにオリジナルの権限を設定できる。
public
投稿タイプを管理画面に表示する。(True or False)
rewrite
名前空間付きカスタム投稿タイプの URL
カスタム投稿タイプの識別子の名前空間をつける時にきれいな URL 構造を使用したい場合は、register_post_type() 関数の rewrite 引数をセットする必要があります。
参考投稿タイプ
has_archive
カスタム投稿タイプのアーカイブページを表示したい場合。
supports
‘supports’には、投稿ページで表示するウィジェットを指定。
taxonomies
カテゴリとタグの機能を追加。
show_ui
管理画面にてカスタム投稿タイプを表示するかどうかの設定。
「false」にすると、管理画面に一切表示されず、編集等も全くできなくなる。
‘menu_position’は、管理画面のメニューの表示位置を指定。
「投稿」の下は5、「メディア」の下は10、「固定ページ」の下は20になります。
おわりに
無事カスタム投稿タイプの実装ができました。
今後のどのように使えるかはわかりませんが、追加で「投稿」を作成する際は有効活用したいです。
この記事を書いた人。
20代。とあるネットベンチャーでがんばる働き屋さん、ブロガー。
書きたいことを気ままに書いてます!
Python、プログラミング、米株、カメラ、野球観戦がすき。趣味は新宿散策。