カスタム投稿タイプとは?カスタムタクソノミーとの関係性も解説

WordPressを使っているとカスタム投稿タイプやカスタムタクソノミーという言葉を聞く機会があると思います。

ただ、なんとなく概念がわかりにくそうというか全体的によくわからないという人もいると思います。

というわけで、今回はカスタム投稿タイプとカスタムタクソノミーについて解説します。ついでにカスタム投稿タイプの作り方も紹介します。

 

投稿タイプとタクソノミーについて

その前にまずは通常の投稿タイプとタクそのミーについて簡単に説明します。

WordPressには2種類の投稿タイプが用意されており、それが「投稿」と「固定ページ」です。

投稿は通常の投稿記事です。普通に記事を投稿するならこの投稿タイプになります。

固定ページはその名の通り固定ページを投稿する際に使われる投稿タイプです。

固定ページにはカテゴリーや投稿日がつかないなど、両者は若干異なります。

 

また、タクソノミーとは記事の分類方法みたいなものです。

タクそのミーには「カテゴリー」と「タグ」があります。

固定ページにはカテゴリーもタグもつかないのでタクソノミーが存在しないということになりますね。

 

カスタム投稿タイプとカスタムタクソノミーについて

カスタム投稿タイプとは、「投稿」「固定ページ」以外に自分でカスタマイズした投稿タイプのことです。

例えば、「チェックボックスが必ず必要になるページを作りたい。今後も記事を頻繁に更新する。でも毎回投稿ページでチェックボックスを作成するのは面倒」という場合は、自分で最初から記事編集画面にチェックボックスが用意されている投稿タイプを作成し、記事の更新をラクにすることが出来ます。

このように通常の投稿では面倒な項目があったり、ある程度決まり切ったパターンで記事をかくような場合にカスタム投稿タイプは大いに役立ってくれます。

 

また、カスタムタクソノミーはカスタム投稿タイプを使って作った記事に当てるカテゴリーやタグのことです。

ほとんど普通のカテゴリーやタグと変わりませんが、カスタム投稿タイプに当てるタクソノミーがカスタムタクソノミーというわけです。

 

カスタム投稿タイプの作り方

では実際にカスタム投稿タイプを作成する方法を紹介します。

カスタム投稿タイプを作成するにはfunctions.phpにコードを記述する必要があります。

本番環境でやる前はFTP経由で行い、必ずバックアップを忘れずに取っておいてください。

 

カスタム投稿タイプの例

まずは「おすすめ商品」というカスタム投稿タイプを作成します。スラッグは「item」としておきましょう。

以下のコードをfunctions.phpのわかりやすい場所にコピペしておきましょう。おすすめ商品の名前は各自変更してください。

/* カスタム投稿タイプ */
add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type(
    'item', /* 投稿タイプのslug */
    array(
      'labels' => array(
      'name' => __( 'おすすめ商品' ),
      'singular_name' => __( 'おすすめ商品' )
      ),
    'public' => true,
    'menu_position' => 5,
    'supports' => array('title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes') /* いろんな機能を有効化 */
    )
  );
}

 

すると、WordPressのダッシュボードに「おすすめ商品」という投稿タイプが表示されるはずです。これがカスタム投稿タイプですね。

また、カスタム投稿タイプでもサムネイルを使う場合はadd_theme_support( ‘post-thumbnails’ );も記述する必要があります。

 

カスタムタクソノミーの例

続いてカスタムタクソノミーも作ります。タクソノミーの名前は「おすすめ」とでもしておきましょう。スラッグは「recommend」としておきます。

上記のcreate_post_type()という関数の{ }の中に以下のコードを貼り付けます。

/* カスタムタクソノミー1 */
register_taxonomy(
  'recommend', /* タクソノミーのslug */
  'item', /* 属する投稿タイプ */
  array(
    'hierarchical' => true,
    'update_count_callback' => '_update_post_term_count',
    'label' => 'カテゴリー',
    'singular_label' => 'カテゴリー',
    'public' => true,
    'show_ui' => true
  )
);

 

最初にカスタムタクソノミーのスラッグと、属する投稿タイプを記述しておきます。他のオプションは配列形式で指定しましょう。

 

ついでにもう一つ「メーカー」というカスタムタクソノミーも作ってみます。

複数のカスタムタクソノミーを追加したい場合はregister_taxonomy()を並べて書けば大丈夫です。スラッグは「maker」としておきます。

属する投稿タイプは同じものを指定しておきましょう。

/* カスタムタクソノミー2 */
register_taxonomy(
  'maker', /* タクソノミーのslug */
  'item', /* 属する投稿タイプ */
  array(
    'hierarchical' => true,
    'update_count_callback' => '_update_post_term_count',
    'label' => 'メーカー',
    'singular_label' => 'メーカー',
    'public' => true,
    'show_ui' => true
  )
);

 

コードまとめ

全部のコードをまとめると以下のようになります。

functions.phpにコピペしておきましょう。

/* カスタム投稿タイプ */

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type(
    'item', /* 投稿タイプのslug */
    array(
      'labels' => array(
      'name' => __( 'おすすめ商品' ),
      'singular_name' => __( 'おすすめ商品' )
    ),
    'public' => true,
    'menu_position' => 5,
    'supports' => array('title','editor','thumbnail','custom-fields','excerpt','author','trackbacks','comments','revisions','page-attributes') /* いろんな機能を有効化 */
    )
  );

/* カスタムタクソノミー1 */
  register_taxonomy(
    'recommend', /* タクソノミーのslug */
    'item', /* 属する投稿タイプ */
    array(
      'hierarchical' => true,
      'update_count_callback' => '_update_post_term_count',
      'label' => 'カテゴリー',
      'singular_label' => 'カテゴリー',
      'public' => true,
      'show_ui' => true
    )
  );

/* カスタムタクソノミー2 */
  register_taxonomy(
    'maker', /* タクソノミーのslug */
    'item', /* 属する投稿タイプ */
    array(
      'hierarchical' => true,
      'update_count_callback' => '_update_post_term_count',
      'label' => 'メーカー',
      'singular_label' => 'メーカー',
      'public' => true,
      'show_ui' => true
    )
  );
}

 

カスタム投稿タイプは他にも色々な要素があります。

きになる人はさらに調べてみるか、WordPress Codex 日本語版などを参考にしてみてください。