なぜカテゴリ名だけを取得する必要があるのか?
多くのWebデザイナーやコーダーがWordPress案件で直面するのが、「特定のカテゴリ情報の中から、純粋にカテゴリ名だけ」を取り出したいという場面です。the_category() や get_the_category() のような標準的な関数は非常に便利ですが、以下のようなケースでは少し使いづらい側面があります。この記事では、2025年現在のWordPress環境において、最もシンプルで堅牢な方法である
get_cat_name() 関数を用いたテクニックと、さらに進んだ $wpdb を使った高速な取得方法を紹介します。指定カテゴリIDの名前を取得する最短コード
WordPressで特定のカテゴリID(例: 5)に紐づくカテゴリ名だけを取得したい場合、コア関数であるget_cat_name() を利用するのが最も確実で迅速な手段です。get_cat_name() を使った基本形
この関数は引数にカテゴリIDを渡すだけで、紐づくカテゴリ名を文字列として返却します。|
1 2 3 4 5 6 7 8 9 |
$category_id = 5; // ★ここに対象のカテゴリIDを指定 $category_name = get_cat_name( $category_id ); if ( $category_name ) { echo esc_html( $category_name ); } else { // カテゴリが存在しない場合の処理 echo '指定されたカテゴリは見つかりませんでした'; } |
get_cat_name() はWordPress 2.1.0から存在する信頼性の高い関数です。出力前に esc_html() でエスケープ処理を施すことで、セキュリティ面も担保できます。
なぜこのコードが優れているのか?(
他の方法(例:get_the_category() や get_category())と比較して、get_cat_name() には二つの大きな優位性があります。シンプルさ
戻り値がカテゴリ名(文字列)のみであるため、オブジェクトの配列や複雑なデータ構造から要素を取り出す手間が一切不要です。パフォーマンス
内部でオブジェクトキャッシュを利用する設計となっており、一度取得したカテゴリ情報はキャッシュから高速に呼び出されます。そのため、ページ内で複数回呼び出してもデータベースへの負荷が増大しにくいのです。
「余計な情報は一切いらない、名前だけ!」という要求には、まさにピッタリの機能なんですね。
カテゴリが本当に存在するかを確かめる堅実な方法
前述のコードはシンプルですが、存在しないIDを指定した場合、get_cat_name() はブランク(空文字 ”)を返します。より堅牢な実装として、カテゴリのオブジェクトそのものを取得して存在確認を同時に行う方法も理解しておきましょう。
get_category() を使って情報を取得し直す
get_cat_name()関数は、指定したIDのカテゴリ情報をオブジェクトとして丸ごと取得します。これを利用することで、カテゴリの有無を確認しつつ、その後の処理へスムーズに移行できます。
|
1 2 3 4 5 6 7 8 9 10 |
$category_id = 8; // ★ID=8のカテゴリ情報を取得 $category_object = get_category( $category_id ); // カテゴリが存在し、かつエラーではないかを確認(get_categoryはWP_Errorまたはfalseを返す可能性あり) if ( $category_object && ! is_wp_error( $category_object ) ) { $category_name = $category_object->name; echo '取得カテゴリ名: ' . esc_html( $category_name ); } else { echo 'エラー:カテゴリID ' . esc_html( $category_id ) . ' は無効です'; } |
カテゴリ名以外(スラッグ、説明文、親IDなど)も $category_object から取得可能になります。
ただ、get_cat_name() の戻り値は単なる false ではなくWP_Error オブジェクトになる可能性もあるため、! is_wp_error() のチェックを追加するのがプロのコーディング手法です。
専門的アプローチ:データベースを直叩きして最速を取得する裏技
もしあなたが、WordPressのキャッシュ機構を通さずに、可能な限り高速にカテゴリ名をデータベースから直接取得したいというパフォーマンス至上主義者なら、$wpdb グローバルオブジェクトを使ったSQLクエリが選択肢に入ります。この方法は、WordPressのAPIを経由しないため、動作が若干高速化される一方で、デバッグが難しくなるというトレードオフが生じます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
global $wpdb; $category_id = 12; // 取得したいカテゴリID // SQLインジェクションを防ぐため $wpdb->prepare() を必ず使用する $sql_query = $wpdb->prepare( "SELECT name FROM {$wpdb->terms} WHERE term_id = %d", $category_id ); $category_name = $wpdb->get_var( $sql_query ); if ( $category_name ) { echo 'DB直叩きカテゴリ名: ' . esc_html( $category_name ); } else { echo '指定IDのタームが見つかりません。'; } |
$wpdb->prepare() は、セキュリティを確保するための必須コードです。これを怠ると、悪意あるコード挿入(SQLインジェクション)の危険性が高まるため、強く使用を推奨します。
【まとめ】状況に応じた最適な関数選び
本記事で解説した3つのアプローチを、あなたのプロジェクトの要求に応じて使い分けてみましょう。| 取得方法 | ユースケース | 特徴と推奨度 |
|---|---|---|
get_cat_name() |
カテゴリ名だけが欲しい場合(最も推奨) | 戻り値は文字列のみで、シンプルかつキャッシュが効くため高速。 |
get_category() |
存在確認やスラッグなど、他の情報も必要な場合 | カテゴリ情報をオブジェクトとして取得。堅牢なエラーチェックが可能。 |
$wpdb (SQL) |
極限まで処理を高速化したい上級者向け | データベースを直接操作するため、知識が必要だが最速。セキュリティに注意。 |


コメント