以前、プラグインなしでカスタム投稿を1つ作る方法はご紹介しました。
1つ作ったときのものをそのままコピー&ペーストして作ると、
同じ関数が2つできるため、エラーになり、画面が表示されなくなります。
今回は、複数作る方法をご紹介します。
カスタム投稿関連作業の流れ(おさらい)
カスタム投稿と、関連する作業の流れは下記のとおりです。
それぞれの処理の目的は以下となります。
必要に応じて、実施してくださいね。
①、または②③:カスタム投稿を作成し、詳細ページを表示させるために必要な処理
④⑤:最近の投稿に追加表示させるために必要な処理
複数作成する場合は、上記の②をします。
カスタム投稿を複数作ろう
投稿の作成は、利用中テーマのfunctions.phpを編集します。
バックアップを取ってから、作業をしましょう。
カスタム投稿作成手順
①外観>テーマエディターの順にクリックする。
②テーマファイル内の「テーマのための関数 (functions.php)」をクリックする。
③以下コードを追加し、画面下部の「ファイルを更新」をクリックする。
add_action( 'init', 'create_post_type' ); function create_post_type() { //カスタム投稿1設定(ここから) register_post_type( 'カスタム投稿名1', array( 'labels' => array( 'name' => __( 'カスタム投稿名1' ), 'singular_name' => __( 'カスタム投稿名1(slug名)' ) ), 'public' => true, 'menu_position' => カスタム投稿1のメニュー表示順(数字), ) ); //カスタム投稿1設定(ここまで) //カスタム投稿2設定(ここから) register_post_type( 'カスタム投稿名2', array( 'labels' => array( 'name' => __( 'カスタム投稿名2' ), 'singular_name' => __( 'カスタム投稿名2(slug名)' ) ), 'public' => true, 'menu_position' =>カスタム投稿2のメニュー表示順(数字), ) ); //カスタム投稿2設定(ここまで) }
④エラーがないことを確認する。
⑤管理画面を更新し、追加したカスタム投稿がメニューに追加されたことを確認する。
コードの意味を確認しよう
記述したコードの意味を確認し、理解を深めておきたいと思います。
- add_action( ‘init’, ‘create_post_type’ );
- ~~~
- }
add_action関数でアクション関数を登録します。
init処理が行われるときに、
登録するcreate_post_type関数を呼び出して処理することを意味しています。
initのほかに、呼び出しのタイミングはいろいろあり、
例えば、initの代わりに「wp_loaded」を指定すると、
WordPress が完全に読み込まれた後に処理を呼び出して処理することになります。
このinitや、wp_loadedのことを「アクションフック」と言います。
- function create_post_type() {
- ~~~
- );
add_action関数で呼び出す関数を定義しています。
- register_post_type()
register_post_type()は、カスタム投稿を作成するための関数。
この関数を利用するため、上述のアクションフックはinitを指定しています。
register_post_type( ‘カスタム投稿名1’, array( ‘labels’ => array( ‘name’ => __( ‘カスタム投稿名1’ ), ‘singular_name’ => __( ‘カスタム投稿名1(slug名)’ ) ), ‘public’ => true, ‘menu_position’ => カスタム投稿1のメニュー表示順(数字), )
引数の内容
labels | name | 投稿タイプの一般名(複数形) |
singular_name | 投稿タイプのオブジェクト 1 個の名前(単数形) | |
public | 投稿タイプを管理画面とユーザーの両方から利用可能にするかどうか。(true/false) | |
menu_position | この投稿タイプが表示されるメニューの位置 「1」を設定すると、ダッシュボードの上に作成したカスタム投稿が表示される。 |
まとめ
いかがでしたでしょうか?
カスタム投稿の設定が出来たら、あとはメニューや一覧への追加作業などをすれば完成ですね。
完成まであと少し、がんばりましょう!