ワードプレス

WordPressで、タグやカテゴリーのリストをドロップダウンメニュー化する方法です。

タグやカテゴリーのリストをドロップダウンメニュー化することで、ユーザーにとって見やすく、選択しやすいデザインを提供できます。
この方法は特に多くのタグやカテゴリがある場合に便利です。
以下に、簡単に実装できるコード例を紹介します。

タグをドロップダウンメニューにする

以下のコードをテーマファイルの functions.php またはテンプレートファイルに追加することで、タグをドロップダウンメニュー化することができます。
ユーザーがドロップダウンからタグを選択すると、そのタグのアーカイブページに移動する仕様です。

<?php $tags = get_tags(); if ( $tags ) : ?>
		<select onchange="document.location.href=this.options[this.selectedIndex].value;">
			<option value="" selected="selected">タグドロップダウンメニュー</option>
<?php foreach ( $tags as $tag ): ?>
			<option value="<?php echo esc_url( get_tag_link( $tag->term_id ) ); ?>"><?php echo esc_html( $tag->name ); ?></option>
<?php endforeach; ?>
		</select>
<?php endif; ?>

ポイント:

  • esc_url()esc_html()関数を使用して、URLとタグ名を適切にエスケープしています。これは、セキュリティの観点からも重要です。
  • get_tag_link()関数を使って、タグのリンクを取得しています。

カテゴリーをドロップダウンメニューにする場合

タグではなくカテゴリーをドロップダウン化したい場合は、以下のコードを使用してください。

<?php
$categories = get_categories( array(
	'orderby' => 'name',
	'order'   => 'ASC',
) );
if ( $categories ) : ?>
	<select name="category-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
		<option value="" selected="selected">カテゴリーを選択</option>
		<?php foreach ( $categories as $category ): ?>
			<option value="<?php echo esc_url( get_category_link( $category->term_id ) ); ?>">
				<?php echo esc_html( $category->name ); ?> (<?php echo $category->count; ?>)
			</option>
		<?php endforeach; ?>
	</select>
<?php endif; ?>

ポイント:

  • get_categories()ですべてのカテゴリーを取得し、名前順に並べています。
  • タグのドロップダウンと同様に、select要素のonchange属性を使用して、ユーザーが選択したときにすぐにページが遷移するように設定しています。
  • セキュリティ対策として、esc_url()esc_html()を使ってURLとカテゴリー名を適切にエスケープしています。
  • 「カテゴリー名 (投稿数)」の形式で表示され、ユーザーに投稿数の目安も伝えることができます。

これでタグのドロップダウンメニューと同じように動作するカテゴリーのドロップダウンメニューを実現できます。
盲目的にコピペして使用して大丈夫です。わかってしまえば簡単ですね。

追加の質問やカスタマイズの希望があれば、ぜひお知らせください。