【WordPressの勉強】カスタム投稿タイプ(register_post_type)の設定 #003

Share

こんにちは!!ようこそ、当ブログgcbgardenへ。管理人のsakurabaaa(@sakurabaaa_g)です。

今回は「カスタム投稿タイプ」を追加する方法をまとめます。

参考投稿タイプ

本番サイトでの作業は十分に注意し必ずバックアップを取ってから作業をしてください。
スポンサーリンク

カスタム投稿タイプとは

カスタム投稿タイプは「投稿」ページのカスタマイズ版のようなものです。

ワードプレスの関数「register_post_type」を使うことで実装ができます。

カスタム投稿タイプはオリジナルの投稿を作るイメージ

ワードプレスの投稿方法には、「固定ページ」と「投稿」が用意されています。

カスタム投稿タイプは「投稿」にちょこっとアレンジを加えた機能のようなものです。

例えば、ブログ記事とは別にニュースリリースだけを管理したいページを作りたいといった要望に答えることができます。

カスタム投稿タイプ(register_post_type)の実装

Codexを参考に実装したコードがこちらです。

そして、作成したカスタム投稿タイプはこのようになりました。

試しに、記事を作ってみました。

公開をクリックし記事の閲覧をしようとした際に404のメッセージが、、、

なにか設定のミスをしたのか?と思い、調べてみると、、

register_post_type 404

ググってみると以下の手順で解決できることがわかりました。

設定>>パーマリンク設定>>変更を保存

「変更を保存」をクリックします。

再び記事にURLへアクセスすると、、

無事ページの閲覧ができました。

【重要】はじめてカスタム投稿タイプを登録した際は、そのカスタム投稿タイプ用のパーマリンクが設定されるので、 flush_rewrite_rules関数を呼び出して、その設定を保存する必要がある(保存しない場合、そのページへのアクセスは404エラーになる)。

参考 register_post_type私的マニュアル

どこに書けばいいの?

「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)

参考WordPressのカスタム投稿タイプの作成と表示

capability_type

カスタム投稿タイプにオリジナルの権限を設定できる。

参考カスタム投稿タイプにオリジナルの権限を設定する方法

public

投稿タイプを管理画面に表示する。(True or False)

rewrite

名前空間付きカスタム投稿タイプの URL
カスタム投稿タイプの識別子の名前空間をつける時にきれいな URL 構造を使用したい場合は、register_post_type() 関数の rewrite 引数をセットする必要があります。

参考投稿タイプ

has_archive

カスタム投稿タイプのアーカイブページを表示したい場合。

supports

‘supports’には、投稿ページで表示するウィジェットを指定。

参考 register_post_type私的マニュアル

taxonomies

カテゴリとタグの機能を追加。

show_ui

管理画面にてカスタム投稿タイプを表示するかどうかの設定。

「false」にすると、管理画面に一切表示されず、編集等も全くできなくなる。

menu_position

‘menu_position’は、管理画面のメニューの表示位置を指定。

「投稿」の下は5、「メディア」の下は10、「固定ページ」の下は20になります。

おわりに

無事カスタム投稿タイプの実装ができました。

今後のどのように使えるかはわかりませんが、追加で「投稿」を作成する際は有効活用したいです。

この記事を書いた人。
20代。とあるネットベンチャーでがんばる働き屋さん、ブロガー。
書きたいことを気ままに書いてます!
Python、プログラミング、米株、カメラ、野球観戦がすき。趣味は新宿散策。

スポンサーリンク

Share

Follow