WordPressのカスタマ投稿をfunctions.phpで実装する投稿一覧・ページ一覧

この記事は約7分で読めます。
記事内に広告が含まれています。

みなさん、いかがお過ごしだったでしょうか。

どうも、れきをくん(@rekiwokun)です。

みなさん、記事を投稿一覧とは別にしたいときはないですか?

そんときはプラグインを入れますか?

実は 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コメントの下
601つ目の区切りの下
65プラグインの下
70ユーザーの下
75ツールの下
80設定の下
1002つ目の区切りの下

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が動かなくなることさえ考えなければなりません。

本当に怖い作業です。

その強さを払拭するために、この記事を備忘録として書きました。

一度、挙動に成功しているコードは他にも応用することができると思ったからです。

しかし、カスタム投稿が作れると、本当に作業効率が上がるのでおすすめです。

今回の講義はこれで終わります。

では、またお会いしましょう!

スポンサーリンク
タイトルとURLをコピーしました