このブログを始めた時に、いくつかの項目をカスタム投稿タイプで実現しようとしていたのですが、今一度、カスタム投稿タイプを勉強し直そうと思い、ちょっとずつ試してみています。
カスタム投稿タイプ
カスタム投稿タイプについてを検索すると、いろいろとエントリーは出てきますが、まずは 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
)
);
}
labels
の name
が表示されてました。 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 を使うか、プラグイン使おうと思うのですが、それはいずれメモします。
今回はここまで。時間をみつけて表示のテンプレート作成もしようと思います。