プラグインを使うことで、容易にカスタム投稿を作成することができます。
しかし、ローカル環境で、カスタム投稿が表示されず、トップページに遷移してしまった原因は、
ローカル環境への移行時に、カスタム投稿を作成するためのプラグインが移行できていないことが原因でした。
今回は、プラグインなしでカスタム投稿を作る方法をご紹介したいと思います。
カスタム投稿って?
WordPressのデフォルトでは、固定ページと投稿ページの2つしかありません。
投稿の形式で、複数のカテゴリを別々に表示させたいと思っても、
デフォルトのままでは、投稿タイプは1つしかないため、カテゴリ分けして表示させることができません。
カスタム投稿を使うことで、カテゴリ別に分けて表示させることができるようになります。
変更概要
プラグインなしでカスタム投稿を作るには、以下の変更が必要となります。
- functions.php
- メニュー
カスタム投稿を管理画面に表示できるようにするために、functions.phpを編集し、
サイト上にカスタム投稿が表示されるようにするために、メニューの追加をします。
順に設定していきましょう。
カスタム投稿の設定(functions.php)
バックアップを取ってから進めていきましょう。
※ローカル環境では、ATOMなどのテキストエディタか、エクスプローラー上で、
ファイルのコピーを取っておきましょう。
※本番環境の場合、ファイルのコピーを取り、ダウンロードしたファイルをテキストエディタで編集しましょう。
functions.php編集手順
①ATOMなどのテキストエディタで、以下ファイルを開く。
※本番環境の場合、[XAMPPのインストールディレクトリ]部分を本番環境のドメイン名に変更する。
②以下コードを最後に追記し、保存する。
※本番環境の場合、ファイルをアップロードする。
add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( '<投稿タイプのslug名>', array( 'labels' => array( 'name' => __( '投稿タイプ名' ), 'singular_name' => __( '<投稿タイプのslug名>' ) ), 'public' => true, 'menu_position' => <管理画面での配置位置>, 'supports' => array('title','editor','thumbnail','custom-fields') ) ); }
コードの意味を確認しましょう
記述したコードの意味を確認し、理解を深めておきたいと思います。
- 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(
- ‘<投稿タイプのslug名>’,
- array(
- ‘labels’ => array(
- ‘name’ => __( ‘投稿タイプ名’ ),
- ‘singular_name’ => __( ‘<投稿タイプのslug名>’ )
- ),
- ‘public’ => true,
- ‘menu_position’ => <管理画面での配置位置>,
- ‘supports’ => array(‘title’,’editor’,’thumbnail’,’custom-fields’)
register_post_type()は、カスタム投稿を作成するための関数。
この関数を利用するため、上述のアクションフックはinitを指定しています。
どのような投稿タイプを作るのかを、引数で指定しています。
1つ目の引数が、投稿タイプの名前のスラッグ名、
2つ目の引数は、投稿タイプの詳細情報です。
ここでは、配列(array)になっています。
引数の内容
labels | ||
name | 投稿タイプの一般名(複数形) | |
singular_name | 投稿タイプのオブジェクト 1 個の名前(単数形) | |
public | 投稿タイプを管理画面とユーザーの両方から利用可能にするかどうか。(true/false) | |
menu_position | この投稿タイプが表示されるメニューの位置 「1」を設定すると、ダッシュボードの上に作成したカスタム投稿が表示される。 |
|
supports | add_post_type_support関数を呼び出すための引数。 これを指定すると、投稿の編集画面にフィールド(エディターやメタボックスなど)が表示される。 |
|
title | タイトル | |
editor | 内容の編集 | |
thumbnail | アイキャッチ画像 | |
custom-fields | カスタムフィールド |
メニューへの追加
functions.phpを編集しただけでは、管理画面には表示されても、
ユーザ側の画面では、表示位置が設定されていないため、表示されません。
ユーザ側の画面のどこに表示させるのか、設定していきましょう。
functions.php編集手順
①管理画面で、次の順にクリックする。
[su_note note_color=”#ddfde6″ radius=”10″]外観>メニュー[/su_note]
②「メニュー項目を追加」から、「カスタムリンク」をクリックする。
③URL、リンク文字列を設定し、「メニューに追加」ボタンをクリックする。
設定項目 | 設定値 |
---|---|
URL | https://localhost/<フォルダ>/?post_type=<指定したスラッグ名> |
リンク文字列 | 画面に表示させるカスタム投稿名 |
④メニュー構造の最下部に追加されるため、表示させたい位置に移動させる。
⑤ユーザ側の画面で、カスタム投稿へのリンクが表示されたことを確認する。
まとめ
いかがでしたか?
プラグインを使わず、カスタム投稿が表示・利用可能になったでしょうか?
利用中のテーマのfunctions.phpを編集しているため、
テーマを変更した場合は、移行作業が必要ですが、
プラグインの更新による影響等はなくなりますね。
それぞれメリット・デメリットがあるため、
どのようなサイトを運営されるかによって、
何を使うのかを考えていきましょう。
コメント