PR

WordPressでデータベースからカテゴリ名とカテゴリIDを取得する方法

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_termswp_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. カスタムウィジェットでカテゴリ一覧を表示する

取得したカテゴリ情報をウィジェットで表示する方法を紹介します。

手順:カスタムウィジェットを作成

  1. functions.php に以下のコードを追加
  2. 管理画面の「ウィジェット」から追加
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用にデータをフォーマット
ウィジェットカテゴリ一覧を表示するカスタムウィジェット

目的に応じて適切な方法を選択し、効率的にカテゴリ情報を取得しましょう!

コメント

タイトルとURLをコピーしました