WordPressでカテゴリ名とカテゴリIDを取得する方法【完全ガイド】
WordPressでは、データベースを直接操作せずに、カテゴリ情報(カテゴリ名とカテゴリID)を取得できる便利な関数が用意されています。本記事では、それらの関数を活用して、簡単にカテゴリ情報を取得する方法を解説します。
1. get_categories() を使用する方法
get_categories()
は、WordPressの標準関数で、カテゴリの一覧を取得できます。
基本的な使い方
$categories = get_categories();
foreach ($categories as $category) {
echo 'ID: ' . $category->term_id . ' - Name: ' . $category->name . "<br>";
}
引数を指定して取得
特定の条件でカテゴリを取得したい場合、以下のように引数を指定できます。
$categories = get_categories(array(
'orderby' => 'name', // 名前順で取得
'order' => 'ASC', // 昇順
'hide_empty' => false // 記事がないカテゴリも含める
));
実行方法(具体例)
① WordPressのテーマファイルにコードを追加
- WordPressの管理画面にログイン
- 外観 > テーマファイルエディター を開く
functions.php
やsingle.php
(投稿ページ)など、適切なファイルにコードを追加
例えば、投稿ごとにカテゴリを表示したい場合は、single.php
に以下のコードを追加します。
<?php
$post_categories = get_the_category();
if (!empty($post_categories)) {
echo '<ul>';
foreach ($post_categories as $category) {
echo '<li>' . esc_html($category->name) . '</li>';
}
echo '</ul>';
}
?>
② ショートコードを作成して記事内で使う
functions.php
に以下のコードを追加し、ショートコード [show_categories]
を記事内に埋め込むと、カテゴリ一覧が表示されます。
function show_category_list() {
$categories = get_categories();
$output = '<ul>';
foreach ($categories as $category) {
$output .= '<li>' . esc_html($category->name) . '</li>';
}
$output .= '</ul>';
return $output;
}
add_shortcode('show_categories', 'show_category_list');
使い方:記事内に [show_categories]
を挿入するだけ!
③ テスト環境で動作確認
- ローカル環境(Local by Flywheel, XAMPPなど)でテスト
- ブラウザで実際にページを開き、カテゴリが表示されるか確認
- エラーが出る場合は、
error_log()
やvar_dump()
でデバッグ
この方法で実行できます!
SQLを使用してカテゴリ情報を取得する方法
WordPressのデータベースからSQLを直接実行してカテゴリ情報を取得することもできます。以下の方法を使用すると、テーマの編集なしにカテゴリ情報を取得できます。
SQLを使用してカテゴリ一覧を取得する
WordPressのカテゴリ情報は wp_terms
テーブルと wp_term_taxonomy
テーブルに保存されています。
SELECT t.term_id, t.name FROM wp_terms t
JOIN wp_term_taxonomy tt ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category';
PHPでSQLを実行する
以下のコードをWordPressのプラグインやカスタムスクリプトに追加すれば、カテゴリ情報を取得できます。
global $wpdb;
$categories = $wpdb->get_results("SELECT t.term_id, t.name FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'category'");
foreach ($categories as $category) {
echo 'ID: ' . esc_html($category->term_id) . ' - Name: ' . esc_html($category->name) . "<br>";
}
この方法ならテーマファイルを変更せずにカテゴリ情報を取得できます。
2. get_terms() を使用する方法
get_terms()
は、カテゴリ以外のタクソノミー(タグやカスタムタクソノミー)も取得できる関数です。
基本的な使い方
$categories = get_terms(array(
'taxonomy' => 'category',
'hide_empty' => false,
));
foreach ($categories as $category) {
echo 'ID: ' . $category->term_id . ' - Name: ' . $category->name . "<br>";
}
3. wp_list_categories() を使用する方法
wp_list_categories()
を使うと、カテゴリの一覧をHTMLリスト形式で出力できます。
基本的な使い方
wp_list_categories(array(
'title_li' => '', // 見出しを非表示
'orderby' => 'name',
'order' => 'ASC',
));
この関数は ul
要素のリストとしてカテゴリを自動生成するため、直接HTMLに埋め込んで使用するのに便利です。
4. get_the_category() を使用する方法
get_the_category()
は、特定の記事に関連付けられたカテゴリ情報を取得するための関数です。
基本的な使い方
$post_categories = get_the_category();
if (!empty($post_categories)) {
foreach ($post_categories as $category) {
echo 'ID: ' . $category->term_id . ' - Name: ' . $category->name . "<br>";
}
}
get_the_category()
は、ループ内で使用すると、現在表示している記事のカテゴリ情報を取得できます。
5. get_category() を使用する方法
get_category()
を使うと、特定のカテゴリIDに対応する情報を取得できます。
基本的な使い方
$category = get_category(2); // IDが2のカテゴリを取得
if ($category) {
echo 'ID: ' . $category->term_id . ' - Name: ' . $category->name;
}
この関数は、特定のカテゴリ情報を1つだけ取得する場合に便利です。
6. まとめ
関数名 | 説明 |
---|---|
get_categories() | すべてのカテゴリ情報を取得 |
get_terms() | タクソノミー全般の情報を取得 |
wp_list_categories() | HTMLリスト形式でカテゴリ一覧を出力 |
get_the_category() | 特定の投稿のカテゴリ情報を取得 |
get_category() | 特定のカテゴリIDに対応する情報を取得 |
これらの関数を活用することで、WordPressのカテゴリ情報を効率的に取得し、さまざまな場面で活用できます。用途に応じた関数を選び、柔軟に使いこなしましょう!
コメント