こんにちは!
WordPressでサイトを構築する時に、ほぼデフォルトで「カスタム投稿タイプ」を使用するようになってきました。使い方を覚えれば、これほど使い勝手の良い機能はないのですが、まだこの機能をご存知でない方もおられます。
ぜひこの機能を知ってもらいたいので、今回は「カスタム投稿タイプ」と「タクソノミー」の設定方法について、いろいろとまとめてみました。この記事を読んでもらうと、「カスタム投稿タイプ」と「タクソノミー」の基本は分かって頂けると思います。
「カスタム投稿タイプ」とは?
WordPressで記事を投稿する時は、管理画面の投稿から記事を作成します(当然ですが)。
ただカテゴリー数などが多くあると、関連性のないカテゴリーが並んでいたり、カテゴリーに親子関係があったりと、管理画面での管理が大変になります。投稿時にカテゴリーのチェック間違いなども起こります。
↓以下を例にすると、本来なら「新着情報」と「施工実績」は投稿画面を別々にしたいところです。現状のデフォルトの設定では同じ投稿画面で投稿するしか方法がありません。
そこでデフォルトの投稿とは別に、新たに独自の投稿の項目を追加したいと思います。この独自に追加した投稿の項目を「カスタム投稿タイプ」と呼びます。
↓「カスタム投稿タイプ」を設定した以下の例では「施工実績」の投稿の項目が新たに追加されています。通常の投稿と「施工実績」を分けた方が分かりやすいですね。
「カスタム投稿タイプ」の設定方法!
それでは実際に「カスタム投稿タイプ」を設定してみます。設定する内容はデフォルトの投稿以外に、「施工実績(construction)」の投稿タイプを追加します。
「functions.php」にコードを追加!
↓以下のコードを「functions.php」に追加してください。
/* カスタム投稿タイプを設定 */ add_action('init', 'my_custom_post_construction'); function my_custom_post_construction() { $labels = array( 'name' => _x('施工実績', 'post type general name'), 'singular_name' => _x('施工実績', 'post type singular name'), 'add_new' => _x('施工実績を追加', 'construction'), 'add_new_item' => __('施工実績を追加'), 'edit_item' => __('施工実績を編集'), 'new_item' => __('施工実績'), 'view_item' => __('施工実績を表示'), 'search_items' => __('施工実績を探す'), 'not_found' => __('施工実績はありません'), 'not_found_in_trash' => __('ゴミ箱に施工実績はありません'), 'parent_item_colon' => '' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => 5, 'has_archive' => true, 'supports' => array('title','editor','author','thumbnail','revisions') ); register_post_type('construction',$args); }
↓管理画面で確認すると「施工実績」の投稿項目が追加されているはずです(カテゴリー追加項目の設定は後でやります)。別の項目名で追加したい場合は、上記コードの「施工実績」と「construction」の部分を変更してください。
↓上記コードの細かい設定に関しては「WordPress Codex 日本語版」でご確認ください。
「カスタム投稿タイプ」用のページを作成!
「カスタム投稿タイプ」用のシングルページやアーカイブページを作成できます。デザインを通常のシングルページやアーカイブページと分けたい時などに使えます。
↓シングルページの場合は以下のようなファイル名になります。
例) 投稿タイプが「construction」の場合、「single-construction.php」になります。
↓アーカイブページの場合は以下のようなファイル名になります。
例) 投稿タイプが「construction」の場合、「archive-construction.php」になります。
「タクソノミー」とは?
「タクソノミー(カスタム分類)」とは、「カスタム投稿タイプ」にとっての「カテゴリー」や「タグ」に当たる機能です。ユーザーが独自で「タクソノミー」を追加することができます。「カスタム投稿タイプ」用の「カテゴリー」や「タグ」を追加すると思ってください。
タクソノミーの設定方法!
それでは実際に「タクソノミー」を設定してみたいと思います。
「functions.php」にコードを追加!
↓先程、追加した「カスタム投稿タイプ」のコードの下に以下のコードを追加してください。「分類名」として「reform」を設定しています。
register_taxonomy( 'reform', /* 分類名 */ 'construction', /* このタクソノミーを使う投稿タイプ */ array( 'label' => '施工実績カテゴリー', /* ダッシュボードに表示する名前 */ 'hierarchical' => true, /* カテゴリーの場合はtrue */ 'query_var' => true, /* 調べたけどよく分からん。でもtrueでいいらしい */ 'rewrite' => true /* パーマリンクのリライトの許可 */ ) );
↓管理画面で確認すると「施工実績カテゴリー」の項目が追加されているはずです。これで「施工実績」の「カテゴリー」追加ができるようになりました。
「タクソノミー」用のページを作成!
「タクソノミー」用のページを作成できます。
↓ファイル名は以下のようになります。
例) 「タクソノミー名」が「reform」の場合、「taxonomy-reform.php」になります。
「ターム」とは?
「ターム」とは「タクソノミー」内の項目のことです。今回の例でいうと「施工実績カテゴリー」に追加したカテゴリーが「ターム」になります。
「カスタム投稿タイプ」の各条件分岐!
「カスタム投稿タイプ」でよく使用する条件分岐をまとめておきます。
「投稿タイプ名」で条件分岐(シングルページ・アーカイブページ)!
使用例!
<?php if(get_post_type()=='construction'): ?> 「投稿タイプ名」が「construction」の時のみ表示されます。 <?php endif; ?>
「カスタム投稿タイプ」で条件分岐(アーカイブページのみ)!
使用例!
<?php if(is_post_type_archive()): ?> 「カスタム投稿タイプ」のアーカイブページの時のみ表示されます。 <?php endif; ?>
「タクソノミー」の「ターム」で条件分岐(シングルページ)!
使用例!
<?php if(is_object_in_term($post->ID, 'reform','kitchen')): ?> 「タクソノミー」が「reform」で「ターム」が「kitchen」の時のみ表示されます。 <?php endif; ?>
「タクソノミー」の「ターム」で条件分岐(シングルページ)!
使用例!
<?php if(is_object_in_term($post->ID, 'reform',array('kitchen','toilet'))): ?> 「タクソノミー」が「reform」で「ターム」が「kitchen」もしくは「toilet」の時のみ表示されます。 <?php endif; ?>
「タクソノミー」で条件分岐(アーカイブページでタクソノミーページのみ)!
使用例!
<?php if(is_tax()): ?> タクソノミーページの時のみ表示されます。 <?php endif; ?>
特定の「タクソノミー」で条件分岐(アーカイブページで指定したタクソノミー)!
使用例!
<?php if(is_tax("reform")): ?> 「reform」のタクソノミーページの時のみ表示されます。 <?php endif; ?>
「タクソノミー」の「ターム」で条件分岐(アーカイブページのみ)!
使用例!
<?php if(is_tax('reform','kitchen')): ?> 「タクソノミー」が「reform」で「ターム」が「kitchen」の時のみ表示されます。 <?php endif; ?>
「タクソノミー」の「ターム」で条件分岐(アーカイブページでタームが複数ある時)!
使用例!
<?php if(is_tax('reform',array('kitchen','toilet'))): ?> 「タクソノミー」が「reform」で「ターム」が「kitchen」もしくは「toilet」の時に表示されます。 <?php endif; ?>
「カスタムフィールド」を使用する!
カスタムフィールドテンプレートとはカスタムフィールドを使いやすくカスタマイズできるプラグインです。導入すると既存の投稿に新たに情報を追加できるようになります。
追加した投稿タイプで「カスタムフィールド」を使用するためには、「カスタムフィールドテンプレート」で「投稿タイプ」を設定する必要があります。
カスタムフィールドテンプレート
設定手順!
↓管理画面から「設定」⇒「カスタムフィールドテンプレート」をクリックしてください。
↓「カスタムフィールドテンプレート」画面が開きますので、「カスタムフィールドテンプレートオプション」の「カスタムポストタイプ(カンマ区切り):」をクリックしてください。
↓「カスタムポストタイプ(カンマ区切り):」の入力欄が開きますので、「カスタム投稿タイプ名」を入力してください。今回は例として「construction」を入力します。最後に「オプションを更新する」ボタンをクリックしてください。
これで設定完了です。
追加した「投稿タイプ」画面の右上にある「表示オプション」をクリックして、「カスタムフィールドテンプレート」にチェックが入っていれば、新規投稿画面に「カスタムフィールドテンプレート」が表示されるはずです。
各表示方法いろいろ!
「カスタム投稿タイプ」に関する表示方法をまとめています。
「カスタム投稿タイプ」に投稿した記事を表示!
使用例!
「post_type」に「カスタム投稿タイプ」を指定してください。
<?php if ( have_posts() ) : query_posts('post_type=カスタム投稿タイプ名&posts_per_page=10&paged='.$paged); ?> <?php while ( have_posts() ) : the_post(); ?> //ループ内容 <?php endwhile; endif; ?>
「タクソノミー」のリストと各記事数を表示!
使用例!
「タクソノミー」のリストをリンク付きで表示させるのと各記事数を表示させることができます。「タクソノミー名」の部分にリストを表示させたい「タクソノミー」を指定してください。
<ul> <?php wp_list_categories('show_count=1&title_li=&taxonomy=タクソノミー名'); ?> </ul>
他にも色々ありますので都度、追加していきたいと思います。
カスタムフィールドのテキストエリア内を改行!
デフォルトではカスタムフィールドのテキストエリア内で改行しても反映されません。改行させるためには、値を出力する箇所を以下のコードのように修正します。
<php echo nl2br(get_post_meta($post->ID,’フィールド名’,true)); ?>
意外と忘れがちなので、カスタムフィールドを導入した時は注意してください。
最後に!
自分自身にとっても良い整理となりました。それ程、設定は難しくなかったと思います。ただ今回掲載したのは、あくまで基本です。もっと細かい設定も可能ですので、ご自身で試してみてください。
あとWordPressに対しての希望ですが、コードを「functions.php」に色々と追加しましたが、できることなら管理画面上で対応できるようになって欲しいですね。
以上「新たに投稿機能を追加!カスタム投稿タイプとタクソノミーの設定!」でした!
それではまた。
コメント