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が使いやすくなりました。ブラボー!(笑)
最近のコメント