2013年09月10日 追記・変更

カスタム投稿を使えばWordPressに新しい投稿タイプを設定出来る
WordPress 3.0 より、カスタム投稿タイプが追加された。通常だと「投稿」と「固定ページ」の2種類の投稿タイプがあるが、カスタム投稿タイプを使う事で新しく投稿タイプを増やす事が可能になる。
カスタム投稿タイプは、独立したコンテンツを作りたい場合等に便利だ。
利用例としては、普段は日記サイトとして使っているが、仕事内容の記事は別の投稿タイプを作り、カテゴリ分けやカスタムフィールド等を活用して分類したい時など。
もっと分かりやすく当サイトを例にあげると「オリジナルテーマを1から作る」というテーマの記事を書いているが、記事が増えていくにつれて不便な点が出てきた。
今回は、カスタム投稿タイプを使う事で「オリジナルテーマを1から作る」のテーマで書いていた記事を独立したコンテンツとして扱ってみる。
簡易的にカスタム投稿タイプを使用するならば「Custom Post Type UI」というプラグインがあるので利用すると良いだろう。
参考:カスタム投稿タイプをプラグイン Custom Post Type UI で簡単実装する
functions.phpにカスタム投稿タイプを追加する記述をすれば使用可能
/* カスタム投稿タイプを追加 */ add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'orijinal_themes', //カスタム投稿タイプ名を指定 array( 'labels' => array( 'name' => __( 'オリジナルテーマ作成' ), 'singular_name' => __( 'オリジナルテーマ作成' ) ), 'public' => true, 'has_archive' => true, /* アーカイブページを持つ */ 'menu_position' =>5, //管理画面のメニュー順位 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields' ,'comments' ), ) ); }menu_position:5ずつ数値を上げると、管理画面の下へと移動する。
menu_positionの数値 | 管理画面上の移動場所 |
---|---|
5 | 投稿の下 |
10 | メディアの下 |
15 | リンクの下 |
20 | 固定ページの下 |
25 | コメントの下 |
60 | 外観の下 |
65 | プラグインの下 |
70 | ユーザーの下 |
75 | ツールの下 |
80 | 設定の下 |
100 | 最下部に独立させる |
管理画面上に新しくカスタム投稿タイプが設定されたのを確認
functions.phpで追加した事により、カスタム投稿「オリジナルテーマ作成」が表示された。
ただ、今現在の状態だと「カテゴリー」や「タグ」などの機能は使用する事ができない。
使用するためには、functions.phpを編集する必要がある。
/* カスタム投稿タイプを追加 */ add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'orijinal_themes', //カスタム投稿タイプ名を指定 array( 'labels' => array( 'name' => __( 'オリジナルテーマ作成' ), 'singular_name' => __( 'オリジナルテーマ作成' ) ), 'public' => true, 'has_archive' => true, /* アーカイブページを持つ */ 'menu_position' =>5, //管理画面のメニュー順位 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields' ,'comments' ), ) ); /* カテゴリタクソノミー(カテゴリー分け)を使えるように設定する */ register_taxonomy( 'orijinal_themes_cat', /* タクソノミーの名前 */ 'orijinal_themes', /* 使用するカスタム投稿タイプ名 */ array( 'hierarchical' => true, /* trueだと親子関係が使用可能。falseで使用不可 */ 'update_count_callback' => '_update_post_term_count', 'label' => 'オリジナルテーマ作成カテゴリー', 'singular_label' => 'オリジナルテーマ作成カテゴリー', 'public' => true, 'show_ui' => true ) ); /* カスタムタクソノミー、タグを使えるようにする */ register_taxonomy( 'orijinal_themes_tag', /* タクソノミーの名前 */ 'orijinal_themes', /* 使用するカスタム投稿タイプ名 */ array( 'hierarchical' => false, 'update_count_callback' => '_update_post_term_count', 'label' => 'オリジナルテーマ作成タグ', 'singular_label' => 'オリジナルテーマ作成タグ', 'public' => true, 'show_ui' => true ) ); }
投稿からカスタム投稿タイプへの移動の仕方
今回、「オリジナルテーマを1から作る」用のカスタム投稿タイプを作成するにあたり、既存記事を移動させる必要があった。本来であれば1記事ずつコピー&ペーストで移動しなければならないところだが、記事移動ではプラグインを使用した。
非常に便利だったため、記載しておく。
・Convert Post Types カテゴリ単位で記事移動が可能。
・pTypeConverter 1記事ずつ選んで記事移動が可能。
カスタム投稿タイプのページアドレス
カスタム投稿タイプのページアドレスは、通常の投稿タイプのアドレスと変わる。投稿記事URL
通常URL:https://www.wordpressmatome.com/オリジナルテーマを1から作る/カスタム投稿タイプURL:https://www.wordpressmatome.com/orijinal_themes/オリジナルテーマを1から作る/
※「orijinal_themes」の部分は、カスタム投稿タイプ名。
カテゴリーのURL
通常URL:https://www.wordpressmatome.com/オリジナルテーマを1から作る/ カスタム投稿タイプURL:https://www.wordpressmatome.com/orijinal_themes_cat/オリジナルテーマを1から作る/※「orijinal_themes_cat」の部分は、カスタム投稿タイプのタクソノミー名
カスタム投稿タイプを使用する際の注意点
「カスタム投稿タイプ」の記事は新規テンプレートを用意する
必ずしも必要なわけではないが、用意した方が良いと思われる。single-カスタム投稿タイプスラッグ名.php
今回作成したカスタム投稿タイプのスラッグ名は「orijinal_themes」なので、ファイル名は「single-orijinal_themes.php」となる。
「single.php」をコピーして、名前を変えるだけで良い。 ※本来はデザインを変えるべき。
「カスタム投稿タイプの一覧ページ」のファイルの読み出し順序
1. taxonomy-{taxonomy}-{term}.php - If the taxonomy were sometax, and taxonomy's slug were someterm WordPress would look for taxonomy-sometax-someterm.php
2. taxonomy-{taxonomy}.php - If the taxonomy were sometax, WordPress would look for taxonomy-sometax.php
3. taxonomy.php
4. archive.php
5. index.php
上記の順番にて読み出される様子。
archive-カスタム投稿タイプスラッグ名.php で一覧ページが出力出来るといった記事が他サイトに多く見られたが、試したところ動作しなかった。
そこで、当サイトではカスタム投稿タイプの一覧ページに「taxonomy.php」を使用した。
追記:archive-カスタム投稿タイプスラッグ名.phpでカスタム投稿タイプの一覧ページが作成出来た。
カスタム投稿タイプのカテゴリー一覧ページの場合は「taxonomy.php」だった。
管理画面のカスタム投稿の記事一覧ページでカテゴリー表示させる方法
プラグインのPS Taxonomy Expanderを使用すると楽だった。プラグインをインストールして有効化後、プラグインページの「PS Taxonomy Expander」の項目の「タクソノミー登録方法」をクリックして、「オリジナルテーマ作成一覧に表示」の右のチェックボックスにチェックを入れるだけだ。
カスタム投稿タイプのテンプレートで、カテゴリー名とリンクの出力方法
カテゴリー名とリンクを表示したい箇所の前に下記を記述
<?php // カスタム投稿タイプ名取得 $tax = esc_html(get_post_type_object(get_post_type())->name); // カスタム投稿タイプのラベル取得 $taxname = esc_html(get_post_type_object(get_post_type())->labels->name); ?>
カテゴリーのリンクと、名前を出力するテンプレタグ
下記を記事のループ内に記述する事で、カスタム投稿タイプのカテゴリーが表示される。<a href="<?php echo get_post_type_archive_link($tax); ?>"><?php echo $taxname; ?></a>