プログラミング、気楽な生き方を中心に発信しています。
  • twitter
  • instagram
  • facebook

【自作】カスタム投稿タイプとは?簡単な作り方を解説【WordPress】

  • カスタム投稿タイプって何?
  • どんな時に使うの?
  • 自作での作り方が知りたい!

こんな方向けの記事になります。

本記事ではカスタム投稿タイプの説明から、どういう場面で使えるかを解説していきます。また記事の後半では自作でのカスタム投稿タイプの作り方も解説していきます。

現在WordPressのカスタマイズをしていて、カスタム投稿タイプを実装したいという方は参考にしてみてください。

※自作の作り方を解説いたしますので、WEB制作の知識が無い方は難しいと思います。

カスタム投稿タイプとは?どんな時に使うの?

カスタム投稿タイプの基礎知識を解説します。
不要な方は飛ばしてください。

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

WordPressカスタマイズの一種で投稿機能を追加する事ができます。

個人でブログなどをしている方は、あまり使う事はないかなと思いますが、コーポレートサイトなど規模が大きいサイトに使う事が多いです。

個人の方でもブログ機能とは別に「新着情報」という投稿機能を作りたいという時などに使用できるかなと思います。

どんな時に使うの?

先ほども少し話しましたが、ブログと新着情報を分けたい時に使います。

イメージとしては下記のような感じ。

  • ブログ:デフォルトの投稿機能
  • 新着情報:カスタム投稿タイプ
  • 事業実績:カスタム投稿タイプ
  • お客様の声:カスタム投稿タイプ

ブログはデフォルトの機能を使えば問題なしですが、それ以外に管理画面から新着情報、事業実績などを投稿できるようにしたいという時などに「カスタム投稿タイプ」は最適です。

特に数に決まりはなく、何個でも追加可能です。

実装方法は2通り

下記の2通りです。

  • プラグインで実装する【初心者向け】
  • 自作で実装する【WEB制作者向け】

プラグインでも簡単に実装する事ができますが、プラグインはサイトが重たくなりますので、自作で作っていくのがいいと思います。WEB制作の知識が必要になりますが、管理もしやすいので基本的には自作で作るのが良いかなと。

本記事は自作での実装方法を解説していきます。

カスタム投稿タイプの作り方を解説【自作】

作り方の流れは下記です。

  • functions.phpにカスタム投稿タイプを登録
  • 任意:専用のarchive-sample.phpを作る
  • 任意:専用のsingle-sample.phpを作る
  • 管理画面で設定して完了

基本的にはfunctions.phpにカスタム投稿タイプを登録するだけです。任意で専用のarchiveやsingleを作っていきます。

functions.phpにカスタム投稿タイプを登録

functions.phpに下記のコードを書きます。

functions.php
/*==================================== カスタム投稿タイプ ====================================*/ add_action( 'init', 'custom_post' ); function custom_post() { //カスタム投稿(投稿項目の名前) register_post_type( 'sample', array( 'label' => 'サンプル', 'public' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'sample' ), 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => 5, 'supports' => array( 'title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes' ), 'has_archive' => true )); //カスタム分類(タクソノミー) register_taxonomy( 'sample_cat', array( 0 => 'sample',),array( 'hierarchical' => true, 'label' => 'カテゴリー', 'public' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'sample_cat' ), )); }

上記では「サンプル」という名前のカスタム投稿タイプを作っています。詳しくコードを解説していきます。

カスタム投稿タイプを登録

functions.php
//カスタム投稿(投稿項目の名前) register_post_type( 'sample', array( //カスタム投稿の名前(今回はsample) 'label' => 'サンプル', //管理画面に表示される名前 'public' => true, //trueでOK! 'query_var' => true, //URLの最適化。trueでOK! 'rewrite' => array( 'slug' => 'sample' ), //スラッグの指定 'capability_type' => 'post', //権限の設定。postでOK! 'hierarchical' => false, //カスタム投稿タイプで親子関係を作るか。(今回はfalse) 'menu_position' => 5, //管理画面での表示場所。5=(投稿の下)10=(メディアの下) 'supports' => array( //編集ページに表示させるもの 'title', //タイトル 'editor', //本文 'thumbnail', //アイキャッチ画像 'custom-fields', //カスタムフィールド 'excerpt', //抜粋 'author', //作成者 'trackbacks', //トラックバック 'comments', //コメント 'revisions', //リビジョン 'page-attributes' //属性 ), 'has_archive' => true //通常のarchive.phpを使うか。基本trueでOK! ));

オリジナルの投稿項目を登録します。コメントアウトに詳しく書きましたので参考に作ってみてください。

カスタム分類(タクソノミー)の登録

functions.php
//カスタム分類(タクソノミー) register_taxonomy( 'sample_cat', array( //カスタム分類の名前(今回はsample_cat) 0 => 'sample',),array( //先ほど作成したsampleを指定 'hierarchical' => true, //カスタム分類で親子関係を作るか(trueで良いと思います) 'label' => 'カテゴリー', //管理画面に表示される名前 'public' => true, //trueでOK 'query_var' => true, //URLの最適化。trueでOK! 'rewrite' => array( 'slug' => 'sample_cat' ), //スラッグの指定 ));

カスタム分類とはカテゴリーの事です。先ほど作成したカスタム投稿タイプの「sample」にカテゴリーを使用できるようにするかを登録しています。なので、カテゴリーが不要な場合は上記の記述はいらないです。

役割としては下記のようなイメージを持っておくと分かりやすと思います。

  • カスタム投稿タイプ:オリジナルの投稿の項目を作成
  • カスタム分類:オリジナルのカテゴリーを作成

上記のように覚えておきましょう。カテゴリーの機能を追加すれば、デフォルトの投稿機能と同じような感じになります。

任意:専用のarchive-sample.phpを作る

元々あるarchive.phpを使用する場合は作る必要はないです。ですが、カスタム分類を作った場合は通常のarchive.phpではカテゴリーが上手く表示されないので新たに作る必要があります。

今回は下記のような「archive-sample.php」というファイルを作りました。ファイル名ににカスタム投稿タイプのスラッグを入れる事で専用のアーカイブページになります。(今回はsample)

archive-sample.php
<!-- カスタム投稿タイプ「sample」のアーカイブページ --> <section class="main_post"> <div class="main_post_wrap"> <div class="main_post_container"> <div class="post_list"> <?php if (have_posts()) : while ( have_posts() ) : the_post(); ?> <article <?php post_class();?>> <a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>" class="post_links"> <!-- アイキャッチ画像 --> <p class="post_thumb"><?php the_post_thumbnail($post->ID); ?></p> <div class="post_txt"> <div class="post_meta"> <!-- 日付 --> <p class="post_time"><?php the_time( get_option( 'date_format' ) ); ?></p> <!-- カテゴリー --> <p class="post_cat"> <?php if ($terms = get_the_terms($post->ID, 'sample_cat')) { foreach ( $terms as $term ) { echo esc_html($term->name); } } ?> </p> </div> <h2 class="post_ttl"><?php the_title(); ?></h2> </div> </a> </article> <?php //終了タグ endwhile; endif; ?> </div> <?php last_paging_nav();?> </div> <!-- サイトバー --> <?php get_sidebar(); ?> </div> </section>

通常のarchive.phpとほとんど同じコードです。
変更点は「カテゴリー」の箇所のみです。

PHP
<!-- カテゴリー --> <p class="post_cat"> <?php if ($terms = get_the_terms($post->ID, 'sample_cat')) { //カスタム分類のスラッグを指定 foreach ( $terms as $term ) { echo esc_html($term->name); } } ?> </p>

コードの説明はいらないかなと思います。
一点だけカスタム分類のスラッグを自分で作ったカスタム分類で作ったスラッグ変更しておきましょう。

任意:専用のsingle-sample.phpを作る

こちらも先ほどのarchive-sample.phpと同じで同じでコードをそのままコピペして「カテゴリー」の表示コードを下記のコードにしておけばOKです。

PHP
<!-- カテゴリー --> <p class="post_cat"> <?php if ($terms = get_the_terms($post->ID, 'sample_cat')) { //カスタム分類のスラッグを指定 foreach ( $terms as $term ) { echo esc_html($term->name); } } ?> </p>

以上でカスタム投稿タイプのコード作成は完了になります。
一度作り方を覚えたら簡単だと思います。プラグインは不要ですね。

さいごに:管理画面で設定する

さいごに:管理画面で設定する

管理画面で「サンプル」という項目が追加されていれば成功です。

パーマリンクの設定

パーマリンクの設定

上記の画像のようにパーマリンクの【変更を保存】をおします。
パーマリンクの表示自体は変える必要ないですが、一度【変更を保存】を押さないとカスタム投稿タイプの設定が反映されないです。

パーマリンクの確認

ドメイン/sample

今回の場合、カスタム投稿タイプのURLは上記のようなパーマリンクになります。

スラッグが他のページと重複している場合はエラーが出て表示されない場合があるので気をつけましょうね。ここまででカスタム投稿タイプの制作は終わりです。簡単でしたね。

それではまた。