カスタムタクソノミーの設置と投稿記事への表示【WordPress】

カスタムタクソノミーって何だ?って感じですが、タクソノミーは分類のことなので、カスタム分類って事ですね。WordPressに元々あるカテゴリやタグもタクソノミーの一つです。

このエントリでは下の様な県名の分類を投稿画面(POST)に追加します。
項目は手抜きです・・・。普通のカテゴリと同様に追加するだけなので。

taxonomy_category

function.phpに追加するコード

Custom Post Type UIと言うプラグインを使えばソースを触らず出来るのですが、何かとプラグインの数も膨らんでいくので直接ファイルに記述します。

下記のソースをテンプレートのfunction.phpに定義すれば、県名の分類メニューが表示されるようになります。

add_action( 'init', 'my_taxonomies', 0 );
function my_taxonomies() {
	// 新規分類を作成する
	register_taxonomy(
		'prefecture', //分類名(基本的にはURLベースとなる)
		'post',       //投稿タイプ
		array(        //オブジェクトタイプ
			//親子関係 trueでカテゴリ的、falseでタグ的
			'hierarchical' => true,
			//管理画面の表示名
            'label' => '県名',
			//分類ページを呼び出すパラメータ付きURLを制御するようです?
			'query_var' => true,
			//変更しない場合はrewriteをtrueにすれば分類名がスラッグに
            'rewrite' => array('slug' => 'pref'),
		)
	);
}

register_taxonomy関数に、分類名・オブジェクトタイプ・パラメータの3つ引数を設定してるってことですね。パラメータは他にも色々あるので、Codex等参考に。query_varは要らない?と思うのですが、一応書いてあります。

県名の分類は親子関係がない状態ですが、hierarchicalをfalseにするとタグの様な扱いになる(下画像)ので、あえてtrueにするとセレクト出来るようになります。

taxonomy_tag

左側には県名メニューが追加されています。register_taxonomyを複数設定すればそれだけ増えていきます。

taxonomy_menu

カスタム分類を投稿記事内に表示する

設定した分類は、get_the_term_listで取り出します。

<?php get_the_term_list( $id, $taxonomy, $before, $sep, $after ) ?>

今回は以下のような感じで、5つの引数を設定してみました。記述するところはsingle.phpのループ内です。
$before, $sep, $afterはそれぞれ、出力される値の前、区切り、後の文字列になるので、ul、liなど入れればリストになります。

<?php echo get_the_term_list( $post->ID, 'prefecture', '県名:', ', ', '' ); ?>

あとは、分類の一覧ページを表示るすためにパーマリンクの更新が必要みたいです。これをしないと404になります。
本当はカスタム投稿も同時に使うほうがいいんでしょうけど、何かしらメタデータを追加するだけならこれでOKです。

参考
WordPress Codex カスタム分類
WordPress Codex 関数リファレンス/get the term list

“カスタムタクソノミーの設置と投稿記事への表示【WordPress】” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。