カスタム投稿タイプの導入をテスト

このエントリーをはてなブックマークに追加

このブログを始めた時に、いくつかの項目をカスタム投稿タイプで実現しようとしていたのですが、今一度、カスタム投稿タイプを勉強し直そうと思い、ちょっとずつ試してみています。

カスタム投稿タイプ

カスタム投稿タイプについてを検索すると、いろいろとエントリーは出てきますが、まずは Codex をチェック。

Post Types « WordPress Codex

functions.php

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( $post_type, $args );
}

register_post_type() を書いた関数を、管理画面の init にフックさせるとのこと。

ということで、register_post_type() の関数をチェックする必要がある。

register_post_type()

こちらも Codex を参照してみることに。

Function Reference/register post type « WordPress Codex

$post_type のみ指定を入れたら使えるようにはなるようだけど、そのままだと管理画面での投稿ができない。最低限投稿機能をつけるためには、投稿のUIを表示させる必要があるらしい。

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'test',
    array(
      'show_ui' => true
    )
  );
}

投稿が増えているのがわかります。

管理画面での表示を変更してみます。

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'test',
    array(
      'label' => 'テスト投稿',
      'show_ui' => true
    )
  );
}

label で変更。

labels で変える方法も例示されていたので、確認してみることに。

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'test',
    array(
      'label' => 'テスト投稿',
      'labels' => array(
        'name' => 'テストテスト',
        'singular_name' => 'テスト',
      ),
      'show_ui' => true
    )
  );
}

labelsname が表示されてました。 singular_name は説明読んでもよくわからず。表示されているところも見つけられず。根本的に自分の使い方が間違っているのだろうと思うのですが、とりあえず保留。

ちなみに Codex上の説明は

'singular_name' - name for one object of this post type. Defaults to value of name

引用元:Function Reference/register post type « WordPress Codex

訳としては、この投稿タイプの 1 オブジェクトの名前。name の値がデフォルト。 との記載。結局どこで使われるものなのか???のまま。以前もわからぬままだった私はつかっていなかったので、今回も保留。あとでまがりん様と鳩のカリスマ様に聞いてみようと思う。

とりあえずは 自分で使うだけなので、 label で今回は進めることに。

今回はもうひとつ、入力箇所を決まった内容のみを入れたいと考えていたので、通常の本文入力のエディタ部分は非表示に、代わりにカスタムフィールドで用意しようかと。カスタムフィールドではなくて、functions.php の中で入力エリアを作成してもよかったのですが、今回は簡易的にカスタムフィールドで。

入力箇所の制御は supports にて指定とのこと。

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'test',
    array(
      'label' => 'テスト投稿',
      'show_ui' => true,
      'supports' => array('title', 'custom-fields')
    )
  );
}

今回はカスタムフィールド表示してみただけで、あとで結局 functions.php を使うか、プラグイン使おうと思うのですが、それはいずれメモします。

今回はここまで。時間をみつけて表示のテンプレート作成もしようと思います。