WordPressのカスタム投稿タイプとは?追加と表示方法を一から解説

WordPressのカスタム投稿タイプとは?

カスタム投稿タイプは、デフォルトで存在する投稿タイプ以外の投稿タイプのことを指します。

例えば、WordPressにはデフォルトとして以下の投稿タイプがあります。

  • 投稿
  • 固定ページ
  • メディア

カスタム投稿タイプを作成するメリット

コンテンツの管理が容易になることです。

特にWordPressのテーマ開発者にとって、顧客の要望通りのサイト設計をで大変役に立つ技術です。

カスタム投稿タイプと合わせて、カスタムフィールドを利用することが多くなるかと思います。

カスタム投稿タイプを作成するデメリット

カスタム投稿タイプの表示に、WordPressの専門的知識が必要となる点です。

カスタム投稿タイプの作成は簡単にできますが、表示を行うためにテンプレートファイルの作成や編集が必要になります。

そのため、使い方を間違うとエラーが発生してしまい、トラブルの元となっていしまいます。

ブロガーやDIYユーザーがカスタム投稿タイプを一から覚えて使うなら、目的にあったテーマを探して使用する方がいいでしょう。

カスタム投稿タイプの使い方

カスタム投稿タイプを使うためには、次の手順が必要です。

  1. カスタム投稿タイプの作成
  2. カスタム投稿タイプの表示を行うためのテンプレート編集

これらの手順について解説していきます。

カスタム投稿タイプの作成方法

WordPressでカスタム投稿タイプを作成するには、プラグインで作成する方法と手動で作成する方法があります。

まずは簡単にできるプラグインで作成する方法を解説していきます。

プラグインで作成する方法

カスタム投稿タイプを作成できるおすすめのプラグインは、Custom Post Type UIです。

手動で作成する方法

カスタム投稿タイプを手動で作成するには、register_post_type関数を使用します。

関数のメソッド内で、register_post_type関数を呼び出します。そして、register_post_type関数を呼び出している関数をinitフックで呼び出します。

DIYユーザーであれば、上記の関数などが記載してあるコードスニペットをfunctions.phpなどで呼び出すことが基本となります。

実際のコードを例にどのように関数を記載するのかみていきます。

必要最低限の記載例

register_post_type関数の必須パラメータのみを記載した場合、次のようなコードでカスタム投稿タイプを作成できます。

add_action('init', 'create_post_types');
function create_post_types() {
  register_post_type('event');
}

一般的な記載例

しかし、必須パラメータのみの記載だと管理がしにくいので、オプションのパラメータを追加することが一般的です。

add_action('init', 'create_post_types');
function create_post_types() {
  register_post_type('event', array(
    'labels' => array(
      'name' => 'イベント',
      'add_new_item' => '新規イベントを追加',
      'edit_item' => 'イベントを編集',
      'all_items' => 'イベント一覧',
      'singular_name' => 'イベント'
    ),
    'public' => true,
    'has_archive' => true
  ));
}

必要に応じて、オプションとなるパラメータを設定しましょう。

カスタム投稿タイプを表示する手順

カスタム投稿タイプは作成しただけでは、サイトの訪問者に向けて表示することができません。

表示を行うためには、テンプレートファイルの編集が必要となります。

カスタム投稿タイプを作成する

まずはカスタム投稿タイプを作成します。

カスタム投稿タイプを作成するには、前述したようにプラグインで作成する方法および手動で作成する方法があります。

今回は手動でカスタム投稿タイプを作成し、必須プラグイン化を行います。

<?php

add_action('init', 'create_post_types');
function create_post_types() {
  register_post_type('glossary', array(
    'labels' => array(
      'name' => '用語集',
      'add_new_item' => '新規用語追加',
      'edit_item' => '用語編集',
      'all_items' => '用語一覧',
      'singular_name' => '用語'
    ),
    'public' => true,
    'has_archive' => true,
    'supports' => array('title', 'editor', 'excerpt', 'custom-fields', 'genesis-seo', 'genesis-scripts', 'genesis-layouts'),
    'menu_icon' => 'dashicons-book'
  ));

}

カスタム投稿タイプを表示できるようにテンプレートを作成または編集する

作成したカスタム投稿タイプを表示するために、テンプレートファイルの作成または編集を行います。

今回は、テンプレートファイルの新規作成を行い、作成したカスタム投稿タイプの表示を行います。

作成するテンプレートファイル名はsingle-glossary.phpです。

テンプレート階層の優先順位に基づいて、作成するテンプレートファイル名を決めます。

エディターで記載した内容を表示したいだけであれば、single.phpの内容をコピペするだけで問題ありません。

例えば、single.phpに内容が次のようであれば、

<pre class="wp-block-syntaxhighlighter-code">&amp;amp;lt;?php

genesis();</pre>

single-glossary.phpは次のようになります。

<pre class="wp-block-syntaxhighlighter-code">&amp;amp;lt;?php

genesis();</pre>

カスタム投稿タイプを作成した後に確認すべきこと

サイトマップ

プラグインによって、作成したカスタム投稿タイプのサイトマップが含まれない場合があります。

設定内容を確認し、サイトマップに含みたい場合はその設定を行いましょう。

カスタム投稿タイプについてよくある質問

カテゴリーやタグはどうやって追加する?

カスタムタクソノミーを利用します。

投稿(コア)で利用している同じカテゴリーやタグはどうやって使う?

register_post_type関数のパラメータ$argsの引数taxonomiesを指定します

taxonomiesで指定する値は次のものです。

  • カテゴリーを利用する場合→category
  • タグを利用する場合→post_tag

次にカテゴリーのみ、タグのみ、カテゴリーとタグの両方を追加したい場合の具体例をあげます。

カテゴリーのみを利用する場合の記載例:

function register_cpt() {
 
    $args = [
        "taxonomies" => [ "category" ]
    ];
 
    register_post_type( "my_cpt", $args );
}
 
add_action( 'init', 'register_cpt' );

タグのみを利用する場合の記載例:

function register_cpt() {
 
    $args = [
        "taxonomies" => [ "post_tag" ]
    ];
 
    register_post_type( "my_cpt", $args );
}
 
add_action( 'init', 'register_cpt' );

カテゴリーとタグを利用する場合の記載例:

function register_cpt() {
 
    $args = [
        "taxonomies" => [ "categoroy", "post_tag" ]
    ];
 
    register_post_type( "my_cpt", $args );
}
 
add_action( 'init', 'register_cpt' );

参考:

WordPress Developer Resources
よかったらシェアしてね!
  • URLをコピーしました!