みなさん、記事を投稿一覧とは別にしたいときはないですか?
そんときはプラグインを入れますか?
実は function.php で実装をできるんです。
今回の記事では、その実装方法をお伝えしていきたいと思います。
では、今回の講義を始めます。
カスタム投稿タイプについて
まずはカスタム投稿とは、というお話からしたいと思います。
主要な投稿タイプ
WordPressには主要な投稿タイプが5つあります。
項目 | 投稿タイプ |
---|---|
投稿 | post |
固定ページ | page |
添付ファイル | attachment |
リビジョン | revision |
ナビゲーションメニュー | nav_menu_item |
「投稿(post)」で「お知らせ」「商品情報」を動的に別に表示した場合は、カスタム投稿として別に作成すると便利です。
では、カスタム投稿とはなんでしょうか。
カスタム投稿とは
カスタム投稿とは、WordPressに最初から用意されている「投稿(post)」とは別に用意をする投稿タイプのことをいいます。
このカスタム投稿の作成には2種類の方法があります。
1つ目はプラグインを使う方法です。
「Custom Post Type UI」という有名なプラグインがあります。
使用者も多いので、使い方が分からないときも調べれば簡単に出てくるのでおすすめです。
2つ目はfunctions.phpを編集する方法です。
今回の記事では、この方法を詳しくお伝えしようと思います。
カスタム投稿タイプを自作する方法
まずはテンプレートをご提示するので、それを元に作成していきましょう。
// カスタム投稿タイプを追加する
function 関数名() {
$Supports = [
'title',
'editor',
'thumbnail',
];
register_post_type( '投稿タイプ',
array(
'label' => '表示名',
'labels' => array(
'all_items' => '表示名一覧'
),
'public' => true,
'has_archive' => true,
'menu_position' => 5,
'supports' => $Supports
)
);
}
add_action( 'init', '関数名' );
「関数名」を書く場所が2箇所ありますが、分かりやすい関数名を記述し、必ず統一してください。
「投稿タイプ」には、先ほどお伝えした5つの主要な投稿タイプから選びます。
今回は「投稿」の投稿タイプを使うので、「post」と記述します。
「表示名」と「表示名一覧」には、サイドメニューに表示する名前を記述します。
きちんとコメントを記述して、数年後に見ても分かるようにしておきましょう。
完成形
// カスタム投稿タイプ「新着情報」を追加する
function create_post_type() {
register_post_type(
'news', //カスタム投稿タイプ名(半角英数字の小文字)
array( //オプション(以下)
'labels' => array(
'name' => '新着情報', // 管理画面上の表示
'all_items' => '新着情報一覧' // ここに一覧表示名
),
'public' => true, // 管理画面に表示するかどうかの指定
'has_archive' => true, // 投稿した記事の一覧ページを作成する
'menu_position' => 5, // 管理画面メニューの表示位置
'supports' => array( // サポートする機能を記述
'title', // タイトル
'editor', // エディター
'thumbnail', // アイキャッチ画像
),
)
);
// カスタムタクソノミーの追加関数
register_taxonomy(
'news-cat', // カテゴリーの名前(半角英数字の小文字)
'news', // カテゴリーを追加したいカスタム投稿タイプ名
array( // オプション(以下
'label' => 'カテゴリー', // 表示名称
'hierarchical' => true, // 階層を持たせるかどうか
'public' => true, // 管理画面に表示するかどうかの指定
'show_in_rest' => true, // REST APIの有効化。ブロックエディタの有効化。
)
);
// カスタムタグの追加関数
register_taxonomy(
'news-tag', // タグの名前(半角英数字の小文字)
'news', // タグを追加したいカスタム投稿タイプ
array( // オプション(以下)
'label' => 'タグ', // 表示名
'hierarchical' => false, // 階層を持たせるかどうか
'public' => true, // このタクソノミーを利用する場合かどうか
'show_in_rest' => true, // REST APIの有効化。ブロックエディタの有効化。
'update_count_callback' => '_update_post_term_count',
)
);
}
add_action( 'init', 'create_post_type' );
カスタム投稿タイプのコードの説明
コードの中で気になって調べたことをお伝えしていきます。
「menu_position」
「menu_position」は、WordPressの管理画面で投稿タイプが表示される位置をすることができます。
これを指定しないと、よく分からない位置に表示されて見栄えがよくありません。
私はだいたい5~9の間で設定しています。
5 | 投稿の下 |
10 | メディアの下 |
15 | リンクの下 |
20 | 固定ページの下 |
25 | コメントの下 |
60 | 1つ目の区切りの下 |
65 | プラグインの下 |
70 | ユーザーの下 |
75 | ツールの下 |
80 | 設定の下 |
100 | 2つ目の区切りの下 |
1つ目の区切りの下は、コメントの下にあります。
2つ目の区切りの下は、設定の下にあります。
「supports」
編集画面に表示・非表示した項目の指定を「supports」に指定することができます。
title | タイトルの項目を追加 |
editor | 本文の項目を追加 |
thumbnail | アイキャッチ画像の項目を追加 |
custom-fields | カスタムフィールドの項目を追加 |
excerpt | 抜粋の項目を追加 |
revisions | リビジョンの項目を追加 |
author | 作成者の項目を追加 |
comments | カスタム投稿タイプの呼び出し |
必ず必須になってくるのがタイトル・本文・アイキャッチ画像です。
その他には必要と思うものを追加していきましょう。
カスタムフィールドは必要な人には必要かもしれませんので、仕様をしっかりと確認してください。
他は丸々コピペして必要な箇所を書き換える感じでいいと思います。
カスタムタクソノミーのコードの説明
まずは、ここでタクソノミーを理解していきましょう。
簡単にいうと、タクソノミーとは記事を分類するものをいいます。
WordPressにはデフォルトでカテゴリーとタグというものがありますが、これらはタクソノミーそのものです。
そして、WordPressがデフォルトで用意しているカテゴリーやタグ以外に自分で作ったタクソノミーをカスタムタクソノミーといいます。
では、カテゴリーとタグの違いはなんでしょうか。
それは階層を持っているかどうかです。
カテゴリーには階層があり、タグには階層がありません。
具体的には、下記の1文をtrueにするかfalseにするかで変わります。
'hierarchical' => true, // 階層を持たせるかどうか
このようにtrueにすると、カテゴリ-と同じになります。
'hierarchical' => false, // 階層を持たせるかどうか
このようにfalseにすると、タグと同じになります。
このあたりの使い方をしっかりと区別していくと、かなり利便の良さに気付きます。
まとめ
私自身がPHPが得意ではありません。
WordPressに手を加えるときは、かなり調べて実施するようにしています。
下手すると、WordPressが動かなくなることさえ考えなければなりません。
本当に怖い作業です。
その強さを払拭するために、この記事を備忘録として書きました。
一度、挙動に成功しているコードは他にも応用することができると思ったからです。
しかし、カスタム投稿が作れると、本当に作業効率が上がるのでおすすめです。
今回の講義はこれで終わります。
では、またお会いしましょう!