【WordPress】プラグイン不使用でカスタムタクソノミーを設定、絞り込み検索について
更新日:2025/01/25

functions.phpでの設定方法
functions.php に以下のコードを追加することでカスタムタクソノミーを作成できます
function create_custom_taxonomy() {
$labels = array(
'name' => 'カテゴリー名',
'singular_name' => '単数形のカテゴリー名',
'menu_name' => 'メニューに表示される名前',
'all_items' => 'すべての項目',
'edit_item' => '編集',
'view_item' => '表示',
'update_item' => '更新',
'add_new_item' => '新規追加',
'search_items' => '検索'
);
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => true, // falseにするとタグ形式
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'taxonomy-slug')
);
register_taxonomy(
'taxonomy-name', // タクソノミーのスラッグ
'post', // 投稿タイプ(post, pageなど)
$args
);
}
add_action('init', 'create_custom_taxonomy');
register_taxonomy について
register_taxonomy の主要パラメータについて
register_taxonomy(
string $taxonomy, // タクソノミーの名前(必須)
array|string $object_type, // 紐付ける投稿タイプ(必須)
array $args // 設定オプション(任意)
);
$args の主要オプションの使用例と解説
$args = array(
'hierarchical' => true, // カテゴリー形式(false=タグ形式)
'public' => true, // 公開設定
'show_in_rest' => true, // ブロックエディタ対応
'rewrite' => array(
'slug' => 'custom-tax', // URLスラッグ
'with_front' => true // パーマリンク先頭部分の継承
),
'show_admin_column' => true, // 投稿一覧にカラム表示
'show_ui' => true, // 管理画面での表示
'query_var' => true // クエリ変数としての使用可否
);
カスタムタクソノミーを設定したfunctions.phpを含むテーマから別のテーマに変更した場合影響
データベースへの影響
- タクソノミーのデータは完全に保持
- 投稿との関連付けも維持
- データの損失や破損のリスクなし
機能面での制限
- 管理画面での制限
- タクソノミーの編集画面が非表示
- 新規投稿時にタクソノミーの選択不可
- フロントエンド
- タクソノミーに基づく表示・検索が機能しない
- アーカイブページにアクセス不可
エラーについて
- 致命的なエラーは発生しない
- get_terms()などの関数は空の結果を返す
- タクソノミーのアーカイブURLにアクセスすると404
テーマ変更時のタクソノミーデータは安全に保持されますが、機能を維持するには新テーマでの再登録が必要です。これにより、データの整合性を保ったままスムーズなテーマ移行が可能です。
カスタム投稿タイプにカスタムタクソノミーを設定
function register_recipe_post_type_and_taxonomy() {
// カスタム投稿タイプの登録
register_post_type('recipe', array(
'labels' => array(
'name' => 'レシピ',
'singular_name' => 'レシピ',
),
'public' => true,
'show_ui' => true,
'rewrite' => true,
'has_archive' => true,
'hierarchical' => true,
'menu_position' => 5,
'supports' => array('title', 'thumbnail'),
'show_in_rest' => true,
));
// カスタムタクソノミーの登録
register_taxonomy('test', 'recipe', array(
'labels' => array(
'name' => 'テストカテゴリー',
'singular_name' => 'テストカテゴリー',
'menu_name' => 'テストカテゴリー'
),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_rest' => true,
'rewrite' => array('slug' => 'test')
));
}
add_action('init', 'register_recipe_post_type_and_taxonomy');
// サムネイル機能を有効にする
add_theme_support('post-thumbnails');
WordPressカスタムタクソノミーの絞り込み機能の実装方法
wp_dropdown_categories()関数
WordPressの管理画面の投稿一覧画面でカテゴリー選択メニューを表示(HTMLの<select>
要素を生成するだけの関数、実際の絞り込み処理は別途必要)
通常は restrict_manage_posts
フックと組み合わせて使用:
add_action('restrict_manage_posts', function() {
global $typenow;
if ($typenow === 'recipe') { // カスタム投稿タイプの場合
wp_dropdown_categories([
'show_option_all' => 'すべてのカテゴリー',
'taxonomy' => 'test',
'name' => 'test',
// ... その他のオプション
]);
}
});
// フィルターを適用するための設定
function convert_taxonomy_term_in_query($query) {
global $pagenow, $typenow;
$taxonomy = 'test';
if ($pagenow === 'edit.php' &&
$typenow === 'recipe' &&
isset($_GET[$taxonomy]) &&
$_GET[$taxonomy] != 0) {
$term = get_term_by('id', $_GET[$taxonomy], $taxonomy);
if ($term) {
$query->query_vars['test'] = $term->slug;
}
}
}
// ユーザーが絞り込みボタンを押したときにフィルターを適用する
add_filter('parse_query', 'convert_taxonomy_term_in_query');

-
検索
(例) debug search etc.. -
カテゴリー
-
【WordPress】カスタムフィールド作成の仕方「ACF」Advanced Custom Fieldsの使用法
更新日:2024/06/10
298 view
-
mixhostでのWordPress利用について
更新日:2024/04/02
295 view
-
scrollHint
更新日:2024/03/13
249 view
-
LOLIPOPでWordPressインストール(サブディレクトリにインストールしたWordPressをドメイン直下で表示)
更新日:2024/06/13
235 view
-
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
234 view
-
Sass導入方法
更新日:2024/03/13
207 view
-
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
163 view
-
【Snow Monkey】Googleサーチコンソール登録
更新日:2024/05/28
157 view
-
ワードプレスでフォントを変えたいとき、プラグインを使えば初心者でも簡単
更新日:2025/02/16
144 view
-
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
129 view
-
【ショートコード】編集画面で任意の場所にHTMLファイルを挿入
更新日:2024/01/26
122 view
-
tailwindcss使い方
更新日:2024/03/13
119 view
-
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
119 view
-
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
107 view
-
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
83 view
-
ワードプレスセキュリティー対策まとめ【2025年】「site guard wordpress」「BackWPup バージョン5でUI変更!?」
更新日:2025/02/25
74 view
-
「THE THOR」を半年使ってみて、レビュー【メリット・デメリット】
更新日:2025/02/16
45 view
-
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
44 view
-
VSCodeで開発効率を劇的に向上させる!Roo-Clineプラグイン完全ガイド【Gemini API】
更新日:2025/02/08
41 view
-
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/02/12
40 view
-
THE THOR(ザ・トール)でグーグルアドセンスを使う
更新日:2025/02/16
39 view
-
WordPressの無料画像素材のおすすめダウンロードサイト!
更新日:2022/02/22
35 view
-
リファクタリング【VSCode Javasctipt Python】
更新日:2025/02/06
34 view
-
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
33 view
-
【Next.js AWS】音声文字起こし&要約、分析アプリケーション(S3)(Transcribe)(Amazon Bedrock)
更新日:2025/02/13
28 view
-
VSCodeプラグイン「 Pretter – Code formatter」「PHP Intelephense 」
更新日:2025/01/06
26 view
-
【WordPress】SVGを投稿記事のサムネイルに!自作プラグイン(未実装🤷♂️)「nonce(ナンス)トークン」wp_postmetaテーブルを利用
更新日:2025/02/16
23 view
-
【CSS JavaScript サンプルコード】アコーディオン 続きを読む(Read more)Toggle 折りたたみコンテンツ
更新日:2025/02/05
23 view
-
Googleアドセンスとは?〜前編〜
更新日:2025/02/16
22 view
-
【WordPressプラグイン】人気記事 管理 WordPress Popular Posts 実践的なカスタマイズ
更新日:2025/02/15
22 view
-
WordPressでカスタムフィールドを使った記事のスコアリング 一定割合ランダム表示でε-greedy方策
更新日:2025/02/24
19 view
-
【WordPress】プラグイン不使用でカスタムタクソノミーを設定、絞り込み検索について
更新日:2025/01/26
18 view
-
スマートフォンファーストのWeb開発実践ガイド
更新日:2025/01/23
16 view
-
「Amazon Bedrock+ Amazon Kendra」で作る社内検索
更新日:2025/01/22
14 view
-
AWSのOCRサービス完全ガイド:Textract、Rekognition、Comprehendの使い分け
更新日:2025/02/09
14 view