WordPressでデータベースからカテゴリ名とカテゴリIDを取得する方法
WordPressのカテゴリ情報(カテゴリ名とカテゴリID)をデータベースから取得する方法を、初心者にもわかりやすく解説します。
1. WordPressのデータベース構造を理解する
WordPressのカテゴリ情報は、データベースの wp_terms
および wp_term_taxonomy
テーブルに保存されています。
テーブル名 | 役割 |
---|---|
wp_terms | カテゴリ名やスラッグなどの基本情報を管理 |
wp_term_taxonomy | 各タクソノミー(カテゴリ、タグなど)の情報を管理 |
カテゴリ情報を取得する際には、これらのテーブルを組み合わせてクエリを実行します。
2. WordPressの関数を使用してカテゴリ情報を取得する
2.1 get_categories()
を使用する方法
get_categories()
は、カテゴリ情報を簡単に取得できる関数です。
使用例:カテゴリIDと名前を取得
$categories = get_categories();
foreach ($categories as $category) {
echo 'ID: ' . $category->term_id . ' - Name: ' . $category->name . "<br>";
}
結果
ID: 1 - Name: 未分類
ID: 2 - Name: ニュース
ID: 3 - Name: ブログ
2.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. SQLクエリを使用してデータベースから取得する
WordPressの関数を使わず、SQLを直接実行してカテゴリ情報を取得する方法です。
使用例:SQLでカテゴリIDと名前を取得
global $wpdb;
$results = $wpdb->get_results(
"SELECT t.term_id, t.name
FROM {$wpdb->prefix}terms AS t
INNER JOIN {$wpdb->prefix}term_taxonomy AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category'"
);
foreach ($results as $row) {
echo 'ID: ' . $row->term_id . ' - Name: ' . $row->name . "<br>";
}
ポイント
$wpdb->prefix
を使用してテーブルプレフィックスを考慮wp_terms
とwp_term_taxonomy
を結合してカテゴリ情報を取得
4. JSON形式で取得する
APIや外部システムで利用しやすいよう、カテゴリ情報をJSON形式で取得する方法です。
使用例:JSON形式でカテゴリを取得
header('Content-Type: application/json');
global $wpdb;
$results = $wpdb->get_results(
"SELECT t.term_id, t.name
FROM {$wpdb->prefix}terms AS t
INNER JOIN {$wpdb->prefix}term_taxonomy AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy = 'category'",
ARRAY_A
);
echo json_encode($results);
結果(例)
[
{"term_id":1, "name":"未分類"},
{"term_id":2, "name":"ニュース"},
{"term_id":3, "name":"ブログ"}
]
5. カスタムウィジェットでカテゴリ一覧を表示する
取得したカテゴリ情報をウィジェットで表示する方法を紹介します。
手順:カスタムウィジェットを作成
functions.php
に以下のコードを追加- 管理画面の「ウィジェット」から追加
class Custom_Category_Widget extends WP_Widget {
function __construct() {
parent::__construct('custom_category_widget', 'カスタムカテゴリウィジェット');
}
function widget($args, $instance) {
echo $args['before_widget'];
echo $args['before_title'] . 'カテゴリ一覧' . $args['after_title'];
$categories = get_categories();
echo '<ul>';
foreach ($categories as $category) {
echo '<li>' . $category->name . '</li>';
}
echo '</ul>';
echo $args['after_widget'];
}
}
function register_custom_category_widget() {
register_widget('Custom_Category_Widget');
}
add_action('widgets_init', 'register_custom_category_widget');
6. まとめ
方法 | 説明 |
---|---|
get_categories() | WordPress標準関数でカテゴリ一覧を取得 |
get_terms() | より柔軟なカテゴリ取得方法 |
SQLクエリ | 直接データベースから取得する方法 |
JSON形式 | API用にデータをフォーマット |
ウィジェット | カテゴリ一覧を表示するカスタムウィジェット |
目的に応じて適切な方法を選択し、効率的にカテゴリ情報を取得しましょう!
コメント