WordPressはカレンダー系のプラグインも豊富ですが、中でも人気の高いのが「Event Organiser」です。機能が豊富な上カスタマイズの自由度が高く、プラグインには珍しく専用のCodexまで用意されているスグレモノです。

Event Organiserはイベントをカテゴリーに分け、しかもカテゴリーごとにカラーピッカーで色設定も出来るので、普通のクライアントさんでも簡単に設定できて評判いいです。

が、「カテゴリーの一覧を色つきで表示させて」と言われてハタと困ってしまいました。頼りのCodexにもそれらしき記述は見当たらず・・・何とか自力解決したのでメモしておきます。

まずはカテゴリー一覧の表示ですが、Codexにはそれらしきものが見当たりませんでした。「イベントのカテゴリーを表示」や「イベントのカテゴリーの色を表示」はあったんですが、カレンダーの下部にカテゴリーだけの一覧を色つきで出したかったのでNGでした。

じゃあ普通にWordPressのカテゴリー一覧取得で、taxonomyを指定すればいいのでは? と思い、タクソノミー名をチェック。

DBも覗いたりしたんですが、単純にダッシュボードのメニューで「イベント」の「カテゴリー」をマウスホバーすると、リンク先URLの中に「taxonomy=event-category」の文字が。

タクソノミー名は「event-category」と判明!

WordPressのカテゴリー一覧を取得する「get_categories」を使って、

<?php
$args = array(
  'taxonomy' => 'event-category'
  );
$categories = get_categories( $args );
foreach ( $categories as $category ) {
	echo '<p>' . $category->name . '</p>';
}
?>

で無事に一覧取得OK!
(カテゴリーページへのリンク付きでリスト表示したければ、wp_list_categories()タグでもOKです!)

お次はカテゴリーの色です。いろいろ考えて、そもそもデフォルトテンプレートではどう表示させているんだろうと考えて、Event Organiserのフォルダ内で「color」を検索したところ、classesフォルダ内の「class-eventorganiser-shortcodes.php」で、

$color = esc_attr($term->color);

と$color変数に$term->colorで取得しているのを発見!

全文読んではいませんが(笑)、$termは「foreach ($terms as $term):」のforeach文で回している中にあったので、$termsがカテゴリーオブジェクトで、各カテゴリー毎に$termで出力しているんだろうと見当を付けて、上記ソースを以下のように改変してみました。

<?php
$args = array(
  'taxonomy' => 'event-category'
  );
$categories = get_categories( $args );
foreach ( $categories as $category ) {
	$color = esc_attr($category->color);
	echo '<p style="background-color: ' . $color . '">' . $category->name . '</p>';
}
?>

これで<p>タグの背景色としてカテゴリーで設定した色をセットすることができました!

HTMLの出力はお望みのデザインに合わせて改変してください。

これでますますEvent Organiserが使いやすくなりました。ブラボー!(笑)