ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

WordPress, カテゴリやタグをカスタマイズする。(タクソノミーのカスタマイズ)

wordpress image
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

デフォルトのタクソノミーには『カテゴリ』『タグ』がありますが、カスタマイズしたいことがあります。たとえばカテゴリを固定ページでも使いたいとか、タグで階層を使いたいとか。

やり方はかんたんです。カスタマイズ用の関数やフィルターが用意されています。

(もちろんカスタム・タクソノミーでも使える。)

タクソノミーは投稿のグループ化に使うもので、デフォルトでは『カテゴリ』と『タグ』があります。

タクソノミーは投稿と紐付けて使うので、投稿が使うタクソノミーを指定しなければいけません。

具体的な例でやってみましょう。

カテゴリを固定ページやカスタム投稿タイプでも使う

デフォルトでは、カテゴリは『投稿』でしか使えません。固定ページでは設定できないようになっています。

タクソノミーの登録処理でそうしているから。

wp-includes/taxonomy.phpより
register_taxonomy(
	'category',
	'post',
	array(
		'hierarchical'          => true,
		'query_var'             => 'category_name',
		'rewrite'               => $rewrite['category'],
		'public'                => true,
		'show_ui'               => true,
		'show_admin_column'     => true,
		'_builtin'              => true,
		'capabilities'          => array(
			'manage_terms' => 'manage_categories',
			'edit_terms'   => 'edit_categories',
			'delete_terms' => 'delete_categories',
			'assign_terms' => 'assign_categories',
		),
		'show_in_rest'          => true,
		'rest_base'             => 'categories',
		'rest_controller_class' => 'WP_REST_Terms_Controller',
	)
);

2番目のパラメータが 'post' になっています。これに固定ページ('page')を追加しましょう。

投稿タイプを追加する処理
add_action('init', function() {
    register_taxonomy_for_object_type( 'category', 'page');
});

register_taxonomy()の2番目のパラメータは $object_type で、タクソノミーを使う投稿タイプを指定するもの。それを変更する関数が register_taxonomy_for_object_type()。

この関数は複数の投稿タイプを指定できません。複数指定するときはひとつずつこの関数を読んで追加していきましょう。

またこれは処理実行のタイミングが重要です。'init' アクションで処理するようにしましょう。

(アクションを使わず実行したら処理は上手くいかない。)

よくテーマのfunctions.phpにコードを挿入する説明が見られますが、よくありません。テーマは本来機能を入れるものではないので。

本来やるべきではありませんが、テーマに入れる場面ではfunctions.phpにいろいろな処理を入れると、数百行、へたすると千単位にもわたる縦長のソースコードになってしまいます。

その記述はプログラマの書くものではありません。機能、役割ごとにファイルを分割するのがプログラミングの基本中の基本。

functions.phpは、requireを使って各機能のphpファイルをロードする親ファイルに徹してください。

タグに階層構成(親子関係)を付ける

あまりすることはないと思いますが、もうひとつのデフォルト・タクソノミーのタグに親子関係をつけてみましょう。

register_taxonomy() の3番目のパラメータは $args なんですが、この値を変更する方法も用意されています。

関数ではなくフィルターを使います。このフィルターはタクソノミーに何かしらの処理が発生したときに実行され、値を変更したものが返されます。

add_filter( 'register_taxonomy_args', function( $args, $taxonomy ) {

    if ( 'post_tag' === $taxonomy ) {
        $args['hierarchical'] = true;
    }

    return $args;
}, 10, 2 );

このフィルターはテーマのfunctions.phpで行ってもできますが、プラグインで行うほうがいいです。

このようにregister_taxonomy() で設定する値は、タクソノミーの名称以外のすべてを後で変更できます。最初に設定で失敗したなと思っても直せるので便利。

これはカスタム・タクソノミーでも同じです。

WordPress.org リファレンス

Hook - register_taxonomy_args

Function - add_filter

前の投稿
WordPress, 投稿の階層構造(親子関係)とカテゴリ(タクソノミー)のちがい
WordPress, 投稿や固定ページをカスタマイズする。(投稿タイプのカスタマイズ)
次の投稿

WordPressの本

post-cta-image

たくさんあるなかで、WordPressの基本が学べる、目的別に学べる本を選びました。

  • WordPressの基本。
  • Webサイト作成から運用まで全体的に学ぶ。
  • かんたんなカスタマイズを学ぶ。
  • 何も分からないところから学ぶ。
  • WordPressからPHPプログラミングを学ぶ。

の5冊です。どうしてもネット上で調べて勉強するのが苦手という人におすすめです。

この内容をモノにすればほかの本は必要ありません。あとは自分の力で、書籍を使わずにインターネット上にある情報だけで学んでいけます。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください