WordPressにカスタム分類をプラグインなしで設定する方法
WordPressサイトでは、記事を「カテゴリー」や「タグ」で分類できます。
他にも分類を増やしたい場合は、カスタム分類を追加します。
また、カスタム投稿専用のカテゴリーやタグを作成することも可能です。
カスタム分類は、投稿記事ページや固定ページ、カスタム投稿タイプに設定することができます。また、複数作成することも可能です。
WordPressをインストールした初期状態では、カスタム分類は使用できません。そのため、WordPressのプラグインで設定するか、又は自分でfunctions.phpにコードを記述する必要があります。
カスタム分類をプラグインで行えば簡単ですが、利便性が良いとはいえません。
自分でカスタマイズすることが推奨されます。
カスタム分類の設定方法は、この記事に詳しく解説されていて、サンプルコードもあるため、参考にしてください。
カスタム分類の設定方法
カスタム分類を設定するには、functions.phpにコードを記述する必要があります。
この記事のサンプルコードを使用すれば簡単に設置できます。運営しているWordPressサイトに合わせて、コードを編集してみてください。
カスタム分類を作成するには、「register_taxonomy」の関数を使用します。各種パラメータも詳しく解説します。
最初に、以下のコードをfunctions.phpに記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
//カスタム分類 function custom_taxonomy() { //カスタム分類(カテゴリー) register_taxonomy('type', 'post', array( 'label' => '分類', 'labels' => array( 'name' => '分類', 'singular_name' => '分類', 'search_items' => '分類を検索', 'popular_items' => 'よく使われている分類', 'all_items' => 'すべての分類', 'parent_item' => '親分類', 'edit_item' => '分類の編集', 'update_item' => '更新', 'add_new_item' => '新規分類を追加', 'new_item_name' => '新しい分類', ), 'public' => true, 'hierarchical' => true, )); //カスタム分類(タグ) register_taxonomy('label', 'post', array( 'label' => 'ラベル', 'labels' => array( 'name' => 'ラベル', 'singular_name' => 'ラベル', 'search_items' => 'ラベルを検索', 'popular_items' => 'よく使われているラベル', 'all_items' => 'すべてのラベル', 'parent_item' => '親ラベル', 'edit_item' => 'ラベルの編集', 'update_item' => '更新', 'add_new_item' => '新規ラベルを追加', 'new_item_name' => '新しいラベル', ), 'public' => true, 'hierarchical' => false, )); flush_rewrite_rules(); } add_action('init', 'custom_taxonomy'); |
function
function部分の「custom_taxonomy」は独自関数の名前です。
サンプルコードでは、「custom_taxonomy」にしました。
register_post_type
register_post_typeの部分にある「type」と「label」は、カスタム分類の名前です。
作成したいカスタム分類の名前を英単語で記述します。
コードでは、分類とラベルに関するカスタム分類ですので、「type」と「label」にしました。
それぞれの好みに合わせて、変えてください。
次に、postの部分は投稿記事を表します。つまり、投稿記事にカスタム分類を追加します。
固定記事であればpostにします。カスタム投稿タイプであれば「カスタム投稿タイプ名」を記述します。
例えば、カスタム投稿タイプ名が「item」であれば、「item」を記述します。
register_taxonomy('type', 'item',
なお、二つ以上のカスタム投稿タイプがあれば以下のような書き方になります。
register_taxonomy('type', array('item','item2'),
label
管理画面の左メニューに表示されるカスタム分類の名前です。
labels
管理画面に表示される名前ラベルを変更できます。
要素名 | 設定内容 |
---|---|
name | カスタム分類の複数形 |
singular_name | カスタム分類の単数形 |
add_new_item | カスタム分類の編集ページの左上に表示される部分のラベル |
search_item | カスタム分類一覧ページの検索部分のラベル |
edit_item | カスタム分類編集ページの左上の方にある編集部分のラベル |
popular_items | 「よく使われる○○」のラベル |
all_items | 「すべての○○」のラベル |
parent_item | 「親○○」のラベル |
choose_from_most_used | 「よく使われている○○から選択」のラベル(タグ型のカスタム分類のみ) |
separate_items_with_commas | 「○○が複数ある場合はコンマで区切ってください」のラベル(タグ型のカスタム分類のみ) |
public
サイト運営者が管理画面で入力するようなカスタム分類を作成するのであれば「ture」にします。
WordPressサイトのプログラム内部で使用するようなカスタム分類であれば、「false」にします。
show_ul
管理画面の左メニューにカスタム分類の項目を表示をする場合は、「ture」にします。
「false」に設定すると管理画面から表示されなくなり、カスタム分類は操作はできなくなります。
設定を省略した場合は、publicに設定した値と同じになります。
hierarchical
カテゴリーのような親子関係があるカスタム分類が良いなら「ture」にします。
タグのような親子関係がないカスタム分類が良いなら「false」にします。
rewrite
カスタム分類のパーマリンクの指定をします。
デフォルトでは「ture」ですので、特に変更する必要がなければ記述しなくて良いです。
「ture」であれば、カスタム投稿タイプのパーマリンクは、「http://WordPressサイトのURL/カスタム分類名/個々のカスタム分類のスラッグ」になります。
なお、カスタム分類のURLを正しく表示するにはパーマリンクの設定をデフォルト以外にします。
サンプルコードを例に挙げれば、カスタム分類名は「type」ですので、次のようなURLになります。
「http://WordPressサイトのURL/type/個々のカスタム分類のスラッグ」
更に、「rewrite => array(‘slug’ => ‘〇〇’)」と指定すれば、「http://WordPressサイトのURL/
○○/個々のカスタム分類のスラッグ」にできます。つまり、カスタム分類名の部分を好きな名に変更できます。
flush_rewrite_rules
「flush_rewrite_rules()」はパーマリンクの再設定を正しく処理する関数です。設定しないとカスタム分類のURLに正しくアクセスできなくなります。そのため、記述しています。
add_action
intでアクションフックが設定されて「custom_taxonomy」を実行します。
カスタム投稿タイプとの組み合わせ
カスタム投稿タイプとカスタム分類を組み合わせて、一つのコードに設定できます。
過去の記事にカスタム投稿タイプの設定方法を解説した記事があります。これとカスタム分類を組み合わせて一つにまとめてみます。
以下のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
//カスタム投稿タイプ function custom_post_type() { register_post_type('item', array( 'label' => '商品', 'labels' => array( 'singular_name' => '商品', 'add_new_item' => '新規商品を追加', 'add_new' => '新規追加', 'new_item' => '新規商品', 'view_item' => '商品を表示', 'not_found' => '商品は見つかりませんでした', 'not_found_in_trash' => 'ゴミ箱に商品はありません。', 'search_items' => '商品を検索', ), 'public' => true, 'menu_position' => 5, 'hierarchical' => ture, 'has_arctive' => ture, 'supports' => array('title','editor','author','tag','category','thumbnail', 'excerpt','comments','custom-fields') )); //カスタム分類(カテゴリー) register_taxonomy('type', 'item', array( 'label' => '分類', 'labels' => array( 'name' => '分類', 'singular_name' => '分類', 'search_items' => '分類を検索', 'popular_items' => 'よく使われている分類', 'all_items' => 'すべての分類', 'parent_item' => '親分類', 'edit_item' => '分類の編集', 'update_item' => '更新', 'add_new_item' => '新規分類を追加', 'new_item_name' => '新しい分類', ), 'public' => true, 'hierarchical' => true, )); //カスタム分類(タグ) register_taxonomy('label', 'item', array( 'label' => 'ラベル', 'labels' => array( 'name' => 'ラベル', 'singular_name' => 'ラベル', 'search_items' => 'ラベルを検索', 'popular_items' => 'よく使われているラベル', 'all_items' => 'すべてのラベル', 'parent_item' => '親ラベル', 'edit_item' => 'ラベルの編集', 'update_item' => '更新', 'add_new_item' => '新規ラベルを追加', 'new_item_name' => '新しいラベル', ), 'public' => true, 'hierarchical' => false, )); flush_rewrite_rules(); } add_action('init', 'custom_post_type'); |
カスタム投稿タイプとカスタム分類が組合わさりました。
カスタム分類のテンプレート
カスタム分類を表示するにはテンプレートが必要です。
以下の優先順位でテンプレートが選択されます。
- taxonomy-カスタム分類名-個々のカスタム分類のスラッグ.php
- taxonomy-カスタム分類名.php
- taxonomy.php
- archive.php
- index.php
例えば、「type」のカスタム分類があり、「typeA」の個々のカスタム分類があるのなら、以下のような優先順位になります。
- taxonomy-type-typeA.php
- taxonomy-type.php
- taxonomy.php
- archive.php
- index.php
カスタム分類のテンプレートを作成する際は、テーマで使用しているカテゴリーページやタグページのテンプレートと同じ内容でカスタム分類ページが表示できます。
なお、カスタム分類を出力するのに、独自の関数もあるので必要に応じて使用してください。カスタム分類の独自関数は機会があるときに記事にいたします。