XO Event Calendar で直近のイベント一覧を表示

WordPress プラグイン『XO Event Calendar』で、直近のイベント一覧を表示するためのショートコードを追加したいとおもいます。

まずは、XO Event Calendar プラグインのイベントについて説明します。

イベントはカスタム投稿タイプ “xo_event”(*) を、イベントのカテゴリーはカスタム タクソノミー “xo_event_cat”(*) を利用しています。

イベントのイベント開始日は “event_start_date”  カスタム フィールド、イベント終了日は “event_end_date” カスタム フィールドです。イベント終了日が未入力の場合は、イベント開始日と同じ値が入っています。

* define やフィルターフックで変更可能です。

ショートコードのソースコード

function.php などに下記のコードを追加します。

if ( !defined( XO_EVENT_CALENDAR_VERSION ) ) {

	function xo_event_list_shortcode( $args ) {
	    global $xo_event_calendar;

	    extract( shortcode_atts( array(
	        'limit' => '10',
	        'category' => '',
	    ), $args ) );

	    $query_args = array(
	        'post_type' => 'xo_event', // または XO_EVENT_CALENDAR_EVENT_POST_TYPE
	        'post_status' => 'publish',
	        'posts_per_page' => $limit,
	        'orderby' => 'meta_value',
	        'order' => 'DESC',
	        'meta_key' => 'event_start_date', // 終了日を対象にする場合は 'event_end_date'
	        'type' => 'DATE',
	    );

	    if ( trim( $category ) !== '' ) {
	        $categories = explode( ',', $category );
	        $query_args['tax_query'] = array( array(
	            'taxonomy' => 'xo_event_cat', // または XO_EVENT_CALENDAR_EVENT_TAXONOMY
	            'field' => 'slug',
	            'terms' => $categories
	        ) );
	    }

	    $output = '<ul class="xo_event_list">';
	    $query = new WP_Query( $query_args );
	    while ( $query->have_posts() ) {
	        $query->the_post();

	        $date = $xo_event_calendar->get_event_date( $query->post->ID );
	        $output .= '<li>';
	        $output .= '<a href="' . get_permalink() . '">' . get_the_title() . '</a> ' . $date;
	        $output .= '</li>';
	    }
        wp_reset_postdata();
	    $output .= '</ul>' . "\n";

	    return $output;
	}

	add_shortcode( 'xo_event_list', 'xo_event_list_shortcode');
}

ショートコードの使い方

記事の表示したい場所に xo_event_list ショートコードを記述します。

[xo_event_list]

使用例:

[xo_event_list limit="5"]

オプション

オプション デフォルト 説明
limit 10 表示件数です。
category “” 表示するカテゴリーです。 スラッグ名で指定します。複数指定する場合はカンマ区切りで指定します。 省略時はすべてのカテゴリーが対象となります。

あとがき

要望があれば、もうすこし汎用的なものをプラグイン本体に組み込みたいとおもいます。

コメント

  • Senri Miura より:

    固定ページに埋め込み可能でお店の営業日とイベント表示ができるプラグインをネットサーフィンで探していたところ、このサイトに辿り着きました。
    プラグイン「XO Event Calendar」は、大変便利で使い勝手が良いので早速お店のHPで使わせて頂きました。
    ご提供、どうもありがとうございました。

  • Senri Miura より:

    石鷹 様
    お世話になります。ご返信どうもありがとうございます。
    急ぎではありませんが、出来ればという事で結構なのですが、
    一つだけこのプラグインの機能への要望があります。
    イベントの設定を編集者のアカウントにも与えたいと思っておりまして、
    アカウントの権限が設定ができるとベストかなと思っております。
    (現状でその設定が可能ならご教授下さいませ)
    なお、昨日、このプラグインの評価をwordpress.orgに記載しておきました。
    ご確認下さいませ。
    以上、宜しくお願いします。

    • 石鷹 より:

      イベントを編集する権限を設定するサンプル(コード)をブログに投稿しました。
      ちょっとややこしいですが、細かく権限を設定できるので希望の処理を組み込めるとおもいます。
      プラグインの評価ありがとうございす!初評価なのでうれしいです。

コメントを残す

メールアドレスが公開されることはありません。

日本語でコメントを入力してください。