MENU

wp_dropdown_categories()

wp_dropdown_categories() は、指定したカテゴリーを選択形式の <select> ドロップダウンメニューで出力するためのテンプレートタグです。カテゴリーをフィルタリングする機能や、ユーザーにカテゴリーの選択を促すUIで使用されます。

目次

機能の説明

wp_dropdown_categories() は、WordPressサイトで定義されたカテゴリーを <select> タグでラップし、ドロップダウンメニューとして出力するための関数です。複数のオプションを指定でき、カテゴリーのリストを自動生成するのに便利です。

シンプルなコード例

<?php wp_dropdown_categories(); ?>

このコードは、サイトに存在するすべてのカテゴリーをドロップダウン形式で表示します。

使い方の解説

wp_dropdown_categories() では、様々な引数を使用して、カテゴリーの表示方法をカスタマイズできます。たとえば、選択メニューの初期値、特定のカテゴリーの除外、階層表示などが可能です。

使用例

<?php
wp_dropdown_categories( array(
    'show_option_none' => 'カテゴリーを選択', 
    'orderby'          => 'name', 
    'hide_empty'       => true,
    'hierarchical'     => true,
    'name'             => 'cat',
    'value_field'      => 'term_id',
) );
?>
  • show_option_none: 初期表示のテキスト(「カテゴリーを選択」)。
  • orderby: カテゴリーの並び順(ここではカテゴリー名で並び替え)。
  • hide_empty: 投稿が1つもないカテゴリーを非表示にするかどうか(true で非表示)。
  • hierarchical: カテゴリーの階層構造を反映させる。
  • name: ドロップダウンの <select> タグに指定する名前。
  • value_field: 各カテゴリーの値として term_id を使用。

この例では、階層構造を保ったカテゴリー一覧を、<select> タグで表示します。

一緒に使うことが多い関連タグ

get_categories()

get_categories() は、カテゴリーのリストを配列として取得するテンプレートタグです。wp_dropdown_categories() で動的にカテゴリーの選択リストを作りたい場合、get_categories() でフィルタリングすることがよくあります。

<?php
$categories = get_categories( array( 'hide_empty' => true ) );
foreach ( $categories as $category ) {
    echo '<li>' . esc_html( $category->name ) . '</li>';
}
?>

この例では、get_categories() で取得したカテゴリーを <li> タグで表示します。wp_dropdown_categories()<select> 要素でリストを表示するのに対し、get_categories() は配列として取り出し、自由な形式で出力できる点が異なります。

get_the_category()

get_the_category() は、特定の投稿に割り当てられたカテゴリーを取得するテンプレートタグです。wp_dropdown_categories() でカテゴリーを選択し、get_the_category() を使って選択されたカテゴリーに関連する投稿を取得する流れで使うことが多いです。

<?php
$categories = get_the_category();
if ( ! empty( $categories ) ) {
    echo '<p>この投稿のカテゴリー: ' . esc_html( $categories[0]->name ) . '</p>';
}
?>

追加情報を取得したい場合

wp_dropdown_categories() では、カテゴリーの情報を取得するだけでなく、選択されたカテゴリーをもとにフィルタリングやクエリを実行することがよくあります。get_category_link() を使えば、選択したカテゴリーへのリンクを生成することも可能です。

get_category()で取得できる情報

get_category() は、指定したIDのカテゴリーの詳細情報を取得します。

<?php
$category = get_category( 5 );
echo 'カテゴリー名: ' . esc_html( $category->name ) . '<br>';
echo 'スラッグ: ' . esc_html( $category->slug ) . '<br>';
echo '説明: ' . esc_html( $category->description );
?>

出力できる情報

  • name: カテゴリー名
  • slug: カテゴリーのスラッグ(URLフレンドリーな名前)
  • description: カテゴリーの説明
  • term_id: カテゴリーID

想定されるトラブル

カテゴリーが表示されない

投稿が一つもないカテゴリーが存在する場合。

解決方法

'hide_empty' => false を指定して、すべてのカテゴリーを表示します。

初期表示のテキストが変更されない

show_option_none の引数が指定されていないか、誤っている可能性があります。

解決方法

'show_option_none' => 'カテゴリーを選択' のように正しく設定してください。

JavaScriptのカスタム動作が動かない

ドロップダウンの name 属性が他の要素と競合している可能性があります。

解決方法

カスタムスクリプトで正しい要素を指定しているか確認し、ユニークな名前を使うようにします。

Q&A

ドロップダウンで選択されたカテゴリーを使って投稿を絞り込むには?

ドロップダウンの値を取得し、それに基づいて WP_Query を実行します。

<?php
if ( isset( $_GET['cat'] ) ) {
    $cat_id = intval( $_GET['cat'] );
    $query = new WP_Query( array( 'cat' => $cat_id ) );
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            the_title( '<h2>', '</h2>' );
        }
    }
    wp_reset_postdata();
}
?>

特定のカテゴリーだけを表示するには?

'include' 引数を使用して、表示するカテゴリーIDを指定します。

<?php
wp_dropdown_categories( array( 'include' => '1,3,5' ) );
?>

まとめ

wp_dropdown_categories() は、カテゴリーを選択形式のドロップダウンメニューで表示する便利なテンプレートタグです。

カテゴリーの選択機能を簡単に実装でき、ユーザーに特定のカテゴリーを選ばせたい場面で役立ちます。

get_categories()get_the_category() といった関連タグと組み合わせることで、カテゴリー情報を柔軟に取得・表示できます。また、選択したカテゴリーを使った投稿の絞り込みにも対応しており、WordPressサイトのカスタマイズに欠かせない機能です。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次