XO Event Calendar イベントリストショートコード

XO Event Calendar プラグインのイベントをリスト表示するショートコードを紹介します。

以前、直近のイベントをリスト表示する方法を紹介しましたが、サンプルコードのようなもので、そのまま使用するものではありませんでした。そこで、今回は多くのケースでそのまま使用できるよう、汎用的なショートコードに仕上げました。
まずは、表示例をご覧ください。

表示例

short タイプ

standard タイプ

detail タイプ

上記の3種類の表示レイアウトが「基本タイプ」となります。これら以外の表示レイアウトは「ユーザー定義タイプ」となります。

xo_event_list ショートコード

[xo_event_list]

short タイプの例:

[xo_event_list type="short"]

detail タイプの例:

[xo_event_list type="detail"]

オプション

オプション説明
type表示タイプです。
“short”, “standard”, “detail” または任意の文字列(ユーザー定義タイプ)。
省略時は、”standard” です。
ユーザー定義タイプの場合(基本タイプ以外)は、format オプションで指定したフォーマットで表示されます。
HTML の class に “type-{$type}”(”type-short”、”type-xxx”(ユーザー定義タイプが xxx の場合))が付与されます。
classHTML の class です。
省略時は、”xo-event-list” です。
beforeリストの前に表示される HTML です。
省略時は、”<dl>” です。
afterリストの後に表示される HTML です。
省略時は、”</dl>” です。
format表示するフォーマットです。
詳細は「format オプション」セクションを参照してください。
limit表示するリストの件数です。
省略時は10です。
orderリストを表示する順序の昇降順です。
” ASC”, または ” DESC” の何れか。省略時は “DESC” です。
orderbyリストを並べ替える項目です。
“date”, “modified”, “title”, “rand”, “event_start_date” または “event_end_date” の何れか。省略時は “date” です。
“event_start_date” および “event_end_date” 以外は組み合わせて指定(カンマ区切り)することができます。
thumbnail_sizeサムネイル画像のサイズです。
“thumbnail”, “medium”, “large”, “full” または “(width),(height)”(例: “100,100”)の何れか。省略時は “thumbnail” です。
categoryカテゴリー スラッグです。
表示するカテゴリーをスラッグで指定します。複数の場合はカンマ区切りで指定します。省略時は “”(すべてのカテゴリー)です。
default_thumbnail_id デフォルトのサムネイル画像の ID です。
excerpt_length抜粋の最大文字数です。
省略時は120文字です。
more抜粋の最大文字数を超えた場合の省略テキストです。
省略時は “…” です。
exclude_end_events終了イベントを除外するかどうかです。
省略時は除外しません。
compare_event終了イベントを表示する条件を指定します。
“equal” : 終了当日のみ (=)
“notEqual” : 終了日以外 (!=)
“greater” : 終了日の翌日以降 (>)
“greaterOrEquals” : 終了日以降 (>=)
“less” : 終了日の前日以前 (<)
“lessOrEquals” : 終了日以前 (<=)

format オプション

HTML に専用の構造タグ(% で囲まれたキーワード)を埋め込むフォーマットで指定します。

構造タグ一覧

構造タグ説明
%date%投稿日を取得します。
%event_start_date%イベントの開始日を取得します。
%event_start_date%イベントの終了日を取得します。
%event_date%イベントの開催期間を取得します。
%category_slug%カテゴリーのスラッグを取得します。
%category%カテゴリーを取得します。
%category_color%カテゴリーの色を取得します。例えば、#eeeeee です。
%category_font_color%カテゴリーの色を背景とした場合の文字の色を取得します。例えば、#333333です。
%permalink%パーマリンクを取得します。
%title%タイトルを取得します。
%thumbnail%サムネイル画像を表示する HTML を取得します。
%excerpt%抜粋を取得します。

format オプションのサンプル

イベント期間+タイトルを表示する場合のショートコードの例です。

[xo_event_list orderby="event_start_date" type="custom" format='<dt><span class="event-date">%event_date%</span></dt><dd><span class="title"><a href="%permalink%">%title%</a></span></dd>']

xo_event_list ショートコードの PHP コード

xo_event_list ショートコードの PHP コードです。

fucntions.php などに記述してください。

if ( defined( 'XO_EVENT_CALENDAR_VERSION' ) ) {

	/**
	 * Shortcode that outputs an event list for the XO Event Calendar.
	 *
	 * @version 0.11.0
	 *
	 * @param array $attr {
	 *     Array of default event list attributes.
	 *
	 *     @type string $type Type of list to display. Accepts 'short', 'standard', 'detail' or Any character string. Default 'standard'.
	 *     @type string $class CSS Class. Default 'xo-event-list'.
	 *     @type string $before HTML displayed before the list. Default '<dl>'.
	 *     @type string $after  HTML displayed after the list. Default '</dl>'.
	 *     @type string $format Display Format. Default empty.
	 *     @type int $limit Amount of list to display. Default 10.
	 *     @type string $order Designates ascending or descending order of items in the list. Accepts 'ASC', 'DESC'. Default 'DESC'.
	 *     @type string $orderby Any column, or columns, to sort the list. Accepts 'date', 'modified', 'title', 'rand', 'event_start_date' or 'event_end_date'. Default 'date'.
	 *     @type string $thumbnail_size Thumbnail image size to use. Accepts 'thumbnail', 'medium', 'large', 'full' or '(width),(height)'. Default 'thumbnail'.
	 *     @type string $category Category slug, or comma-separated list of slugs. Default empty.
	 *     @type int $default_thumbnail_id The default attached thumbnail ID. Default null.
	 * }
	 *
	 * @return string Event list output. Empty string if the passed type is unsupported.
	 */
	function xo_event_list_shortcode( $attr ) {
		global $allowedposttags, $xo_event_calendar;

		$atts = shortcode_atts( array(
			'type'                 => 'standard',
			'class'                => 'xo-event-list',
			'before'               => '<dl>',
			'after'                => '</dl>',
			'format'               => '',
			'limit'                => '10',
			'order'                => 'DESC',
			'orderby'              => 'date',
			'thumbnail_size'       => 'thumbnail',
			'category'             => '',
			'default_thumbnail_id' => null,
			'excerpt_length'       => 120,
			'more'                 => __( '&hellip;' ),
			'exclude_end_events'   => '',
			'compare_event'        => '',
		), $attr, 'xo_event_list' );

		$args = array(
			'post_type'      => XO_EVENT_CALENDAR_EVENT_POST_TYPE,
			'post_status'    => 'publish',
			'posts_per_page' => $atts['limit'],
			'order'          => $atts['order'],
		);

		$class  = esc_attr( $atts['class'] );
		$before = wp_kses( wp_specialchars_decode( $atts['before'] ), $allowedposttags );
		$after  = wp_kses( wp_specialchars_decode( $atts['after'] ), $allowedposttags );

		$type_class        = '';
		$format            = '';
		$default_thumbnail = '';

		switch ( $atts['type'] ) {
			case 'short':
				$type_class = 'type-short';
				if ( $atts['format'] ) {
					$format = $atts['format'];
				} else {
					$format =
						'<dt><span class="date">%date%</span></dt>' .
						'<dd><span class="title"><a href="%permalink%">%title%</a></span></dd>';
				}
				break;
			case 'standard':
				$type_class = 'type-standard';
				if ( $atts['format'] ) {
					$format = $atts['format'];
				} else {
					$format =
						'<dt><span class="date">%date%</span></dt>' .
						'<dd>' .
						'<span class="category category-%category_slug%" style="color:%category_font_color%;background-color:%category_color%;">%category%</span>' .
						'<span class="title"><a href="%permalink%">%title%</a></span>' .
						'</dd>';
				}
				break;
			case 'detail':
				$type_class = 'type-detail';
				if ( $atts['format'] ) {
					$format = $atts['format'];
				} else {
					$format =
						'<dt><span class="thumbnail"><a href="%permalink%">%thumbnail%</a></span></dt>' .
						'<dd>' .
						'<p>' .
						'<span class="date">%date%</span>' .
						'<span class="category category-%category_slug%" style="color:%category_font_color%;background-color:%category_color%;">%category%</span>' .
						'</p>' .
						'<p class="title"><a href="%permalink%">%title%</a></p>' .
						'<p class="event-date">' . esc_html__( 'Event date:', 'xo-event-calendar' ) . ' %event_date%</p>' .
						'<p class="excerpt">%excerpt%</p>' .
						'</dd>';
				}
				break;
			default:
				$type_class = esc_attr( "type-{$atts['type']}" );
				$format = wp_kses( wp_specialchars_decode( $atts['format'] ), $allowedposttags );
				break;
		}

		if ( $atts['exclude_end_events'] ) {
			$date = date_i18n( 'Y-m-d' );
			$args['meta_query'] = array(
				'event_end_date' => array( 'key' => 'event_end_date', 'value' => $date, 'compare' => '>=', 'type' => 'DATE' ),
			);
		}

		if ( $atts['compare_event'] ) {
			$s = array( 'notEqual', 'equal', 'greaterOrEquals', 'greater', 'lessOrEquals', 'less' );
			$r = array( '!=',       '=',     '>=',              '>',       '<=',           '<'    );
			if ( in_array( $atts['compare_event'], $s ) ) {
				$compare_event = str_replace( $s, $r, $atts['compare_event'] );
				$date = date_i18n( 'Y-m-d' );
				$args['meta_query'] = array(
					'event_end_date' => array( 'key' => 'event_end_date', 'value' => $date, 'compare' => $compare_event, 'type' => 'DATE' ),
				);
			}
		}

		if ( 'event_start_date' == $atts['orderby'] ) {
			if ( 'ASC' == $atts['order'] ) {
				$args['orderby'] = array( 'event_start_date' => 'ASC', 'event_start_hour' => 'ASC', 'event_start_minute' => 'ASC' );
			} else {
				$args['orderby'] = array( 'event_start_date' => 'DESC', 'event_start_hour' => 'DESC', 'event_start_minute' => 'DESC' );
			}
			$meta_query = array(
				'event_start_date' => array( 'key' => 'event_start_date', 'type' => 'DATE' ),
				'event_start_hour' => array( 'key' => 'event_start_hour', 'type' => 'NUMERIC' ),
				'event_start_minute' => array( 'key' => 'event_start_minute', 'type' => 'NUMERIC' ), 
			);
			$args['meta_query'] = isset( $args['meta_query'] ) ? array_merge( (array) $args['meta_query'], $meta_query ) : $meta_query;
		} elseif ( 'event_end_date' == $atts['orderby'] ) {
			if ( 'ASC' == $atts['order'] ) {
				$args['orderby'] = array( 'event_end_date' => 'ASC', 'event_start_hour' => 'ASC', 'event_start_minute' => 'ASC' );
			} else {
				$args['orderby'] = array( 'event_end_date' => 'DESC', 'event_start_hour' => 'DESC', 'event_start_minute' => 'DESC' );
			}
			$meta_query = array(
				'event_start_date' => array( 'key' => 'event_end_date', 'type' => 'DATE' ),
				'event_start_hour' => array( 'key' => 'event_end_hour', 'type' => 'NUMERIC' ),
				'event_start_minute' => array( 'key' => 'event_end_minute', 'type' => 'NUMERIC' ), 
			);
			$args['meta_query'] = isset( $args['meta_query'] ) ? array_merge( (array) $args['meta_query'], $meta_query ) : $meta_query;
		} else {
			$args['orderby'] = $atts['orderby'];
		}

		if ( $atts['category'] ) {
			$tarms = $categories = explode( ',', $atts['category'] );
			$args['tax_query'] = array( array(
				'taxonomy' => XO_EVENT_CALENDAR_EVENT_TAXONOMY,
				'field'    => 'slug',
				'terms'    => $tarms,
			) );
		}

		$has_category = ( strpos( $format, '%category%' ) !== false || strpos( $format, '%category_color%' ) !== false || strpos( $format, '%category_font_color%' ) !== false);
		$has_thumbnail = ( strpos( $format, '%thumbnail%' ) !== false );
		if ( $has_thumbnail ) {
			if ( strpos( $atts['thumbnail_size'], ',' ) !== false ) {
				$sizes = explode( ',', $atts['thumbnail_size'] );
				if ( count( $sizes ) === 2 ) {
					$thumbnail_size = array( (int)$sizes[0], (int)$sizes[1] );
				}
			} else {
				$thumbnail_size = $atts['thumbnail_size'];
			}
			if ( !$thumbnail_size ) {
				$has_thumbnail = false;
			}
		}
		if ( $has_thumbnail ) {
			if ( ( $default_thumbnail_id = intval( $atts[ 'default_thumbnail_id' ] ) ) !== 0 ) {
				$default_thumbnail = wp_get_attachment_image( $default_thumbnail_id, $thumbnail_size );
			}
		}

		$date_format = get_option( 'date_format' );
		$time_format = get_option( 'time_format' );

		$output = '';

		$posts = new WP_Query( $args );
		while ( $posts->have_posts() ) {
			$posts->the_post();
			$post_id = $posts->post->ID;

			if ( $has_thumbnail ) {
				if ( has_post_thumbnail( $post_id ) ) {
					$thumbnail = get_the_post_thumbnail( $post_id, $thumbnail_size );
				} else {
					$thumbnail = $default_thumbnail;
				}
			} else {
				$thumbnail = '';
			}

			$category_slug = '';
			$category = '';
			$category_color = '';
			$category_font_color = '';

			if ( $has_category ) {
				$cats = get_the_terms( $post_id, XO_EVENT_CALENDAR_EVENT_TAXONOMY );
				if ( $cats && ! is_wp_error( $cats ) && count( $cats ) > 0 ) {
					$cat = $cats[0];

					$category_slug = $cat->slug;
					$category      = $cat->name;

					$cat_data = get_option( 'xo_event_calendar_cat_' . intval( $cat->term_id ) );
					$cat_color = esc_html( $cat_data['category_color'] );
					$category_color = $cat_color ? $cat_color : '#ccc';

					if ( is_callable( array( 'XO_Color', 'get_hsv' ) ) ) {
						$hsv = XO_Color::get_hsv( XO_Color::get_rgb( $category_color ) );
					} else {
						$hsv = XO_Color::getHsv( XO_Color::getRgb( $category_color ) );
					}

					$category_font_color = $hsv['v'] > 0.8 ? '#333' : '#eee';
				}
			}

			$custom = get_post_custom( $post_id );

			$line = $format;

			if ( false !== strpos( $format, '%date%' ) ) {
				$line = str_replace( '%date%', get_the_date(), $line );
			}

			if ( false !== strpos( $format, '%event_start_date%' ) ) {
				if ( $custom['event_all_day'][0] ) {
					$date = date_i18n( $date_format, strtotime( $custom['event_start_date'][0] ) );
				} else {
					$date = date_i18n( $date_format . ' ' . $time_format, strtotime( sprintf( '%s %d:%d', $custom['event_start_date'][0], (int) $custom['event_start_hour'][0], (int) $custom['event_start_minute'][0] ) ) );
				}
				$line = str_replace( '%event_start_date%', $date, $line );
			}

			if ( false !== strpos( $format, '%event_end_date%' ) ) {
				if ( $custom['event_all_day'][0] ) {
					$date = date_i18n( $date_format, strtotime( $custom['event_end_date'][0] ) );
				} else {
					$date = date_i18n( $date_format . ' ' . $time_format, strtotime( sprintf( '%s %d:%d', $custom['event_end_date'][0], (int) $custom['event_end_hour'][0], (int) $custom['event_end_minute'][0] ) ) );
				}
				$line = str_replace( '%event_end_date%', $date, $line );
			}

			if ( false !== strpos( $format, '%event_date%' ) ) {
				$line = str_replace( '%event_date%', $xo_event_calendar->get_event_date( $post_id ), $line );
			}

			if ( false !== strpos( $format, '%category%' ) ) {
				$line = str_replace( '%category%', $category, $line );
			}

			if ( false !== strpos( $format, '%category_slug%' ) ) {
				$line = str_replace( '%category_slug%', $category_slug, $line );
			}

			if ( false !== strpos( $format, '%category_color%' ) ) {
				$line = str_replace( '%category_color%', $category_color, $line );
			}

			if ( false !== strpos( $format, '%category_font_color%' ) ) {
				$line = str_replace( '%category_font_color%', $category_font_color, $line );
			}

			if ( false !== strpos( $format, '%permalink%' ) ) {
				$line = str_replace( '%permalink%', get_permalink(), $line );
			}

			if ( false !== strpos( $format, '%title%' ) ) {
				$line = str_replace( '%title%', get_the_title(), $line );
			}

			if ( false !== strpos( $format, '%thumbnail%' ) ) {
				$line = str_replace( '%thumbnail%', $thumbnail, $line );
			}

			if ( false !== strpos( $format, '%excerpt%' ) ) {
				$excerpt = get_the_custom_excerpt( get_the_content(), $atts['excerpt_length'], $atts['more'] );
				$line = str_replace( '%excerpt%', $excerpt, $line );
			}

			$output .= "{$before}{$line}{$after}";
		}
		wp_reset_postdata();

		$output = "<div class=\"{$class} {$type_class}\">{$output}</div>\n";

		return $output;
	}

	/**
	 * Retrieves the post excerpt.
	 *
	 * @since 0.5.0
	 *
	 * @param string $content Post content.
	 * @param int    $length  Optional. Maximum length of the excerpt. Default 120 characters.
	 * @param string $more    Optional. What to append if $content needs to be trimmed. Default '&hellip;'.
	 * @return string Post excerpt.
	 */
	function get_the_custom_excerpt( $content, $length = 120, $more = null ) {
		if ( null === $more ) {
			$more = __( '&hellip;' );
		}

		$content = preg_replace( '/<!--more-->.+/is', '', $content );
		$content = strip_shortcodes( $content );
		$content = strip_tags( $content );
		$content = str_replace( '&nbsp;', '', $content );
		if ( mb_strlen( $content ) > $length ) {
			$content = mb_substr( $content, 0, $length ) . ' ' . $more;
		}
		return $content;
	}

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

スタイル(CSS)

スタイル(CSS)の例です。適当に調整してください。

style.css 等に記述してください。

/*
XO Event Calendar - Event list
*/
.xo-event-list * {
	font-size: 1rem;
}
.xo-event-list {
	list-style: none;
	display: block;
	margin: 0;
}
.xo-event-list p {
	margin: 0 0 0.5rem;
	padding: 0;
}
.xo-event-list > dl {
	display: block;
	margin: .1rem 0 0 0;
	padding: 0 0 .1rem 0;
	overflow: hidden;
	color: #444;
	border-bottom: dotted 1px #ccc;
}
.xo-event-list > dl > dt,
.xo-event-list > dl > dd {
	display: table-cell;
	vertical-align: top;
}
.xo-event-list > dl > dt > span,
.xo-event-list > dl > dd > span {
	float: left;
	margin: 0 1rem 0 0;
	padding: 0;
	vertical-align: middle;
}
.xo-event-list .thumbnail {
	margin: .2rem 0;
}
.xo-event-list .thumbnail img {
	padding-right: 15px;
	width: 110px;
	min-width: 110px;
	height: auto;
	object-fit: cover;
}
.xo-event-list .date {
	margin-top: .1rem;
	font-size: .9rem;
}
.xo-event-list.type-short .date,
.xo-event-list.type-standard .date {
	width: 7.5rem;
}
.xo-event-list .category {
	margin-top: .2rem;
	margin-bottom: .1rem;
	padding: 0 .5rem;
	text-align: center;
	font-size: .8rem;
	color: #fff;
	border-radius: 2px;
}
.xo-event-list.type-short .category,
.xo-event-list.type-standard .category {
	width: 8.5rem;
}
.xo-event-list.type-detail .category {
	margin-left: 0.5rem;
}
.xo-event-list .title {
	margin-top: .1rem;
}
.xo-event-list .event-date {
	font-size: .9rem;
}
.xo-event-list li br {
	display: block;
}

.xo-event-list.type-custom .event-date {
	width: 16rem;
	margin-top: .2rem;
}

shortcode_atts_{$shortcode} フィルタフック

shortcode_atts_{$shortcode} フィルタフックを使用すれば、ショートコードのオプションを設定することができます。

同じオプションのショートコードを複数の場所に記述する場合や、PHP コードで柔軟に指定する場合など、便利なフックです。

例えば、detail タイプで表示される「イベント日:」を「開催日:」にする場合は、下記のようなコードになります。

function filter_shortcode_atts_xo_event_list( $out, $pairs, $atts, $shortcode ) { 
	if ( $out['type'] == 'detail' ) {
		$out['format'] =
			'<dt><span class="thumbnail"><a href="%permalink%">%thumbnail%</a></span></dt>' .
			'<dd>' .
			'<span class="date">%date%</span>' .
			'<span class="category" style="color:%category_font_color%;background-color:%category_color%;">%category%</span><br>' .
			'<span class="title"><a href="%permalink%">%title%</a></span><br>' .
			'<span class="event-date">開催日: %event_date%</span>' .
			'</dd>';
	}
	return $out; 
}

add_filter( 'shortcode_atts_xo_event_list', 'filter_shortcode_atts_xo_event_list', 10, 4 );

最後に

イベントをリスト表示するといっても千差万別あり、だれにでも当てはまるものにするのは意外と難しいものです。

こうした方がいいああした方がいいと思うところはまだまだありますが、際限がないので今回は想定するコモンケースに絞ってみました。仕様も固まってはいないので、プラグインには当面組み込まない予定です。

是非皆さんのご意見ご要望をもらえればと思います。

更新履歴

v0.11.0 – 2023年3月20日

  • XO Event Calendar バージョン3.1.0に対応しました。以前のショートコード(0.10.0以前)ではエラーが発生してサイトが表示されない場合があります。ご注意ください。

v0.10.0 – 2023年2月26日

  • %category_slug% タグを追加しました。

v0.9.0 – 2022年12月30日

  • イベント開始日および終了日の表記に時刻を追加しました。

v0.7.0 – 2022年10月8日

  • compare_event オプションを追加しました。

v0.6.2 – 2022年10月7日

  • カテゴリー未設定時にエラーメッセージが表示される不具合を修正しました。

v0.6.1 – 2022年5月27日

  • exclude_end_events 指定時のイベント日時によるソートが正しくソートされない不具合を修正しました。

v0.6.0 – 2022年5月26日

  • イベント日時のソートを時刻を含めるようにしました。

v0.5.0 – 2020年9月25日

  • exclude_end_events オプションを追加しました。

v0.4.0 – 2020年5月31日

  • 抜粋タグ(%excerpt%)と excerpt_length、more オプションを追加しました。

v0.3.1 – 2018年4月14日

  • default_thumbnail_id オプションを追加しました。

v0.1.0 – 2018年4月10日

  • 初リリース。

コメント

  • はじめまして。素敵なカレンダーをありがとうございます。
    他のプラグインでうまく動かずに困っていたところ、こちらのプラグインに出会って無事にカレンダーの表示ができました!

    こちらのリストの表示はphpをいじらないとできないのでしょうか。
    タグの挿入だけでは表示ができなかったので、教えていただけますでしょうか。

    また、以下の点を変更したいと思っているのですが、可能でしょうか。
    ・カレンダーの土日の文字色
    ・カレンダーを月曜始まりに
    ・月火水・・・を英語表記に(Mon,Tue,Wed)

    お忙しい中、恐縮ですが、お返事いただけたら嬉しいです。
    よろしくおねがいいたします。

    • こんにちは、コメントありがとうございます。

      > こちらのリストの表示はphpをいじらないとできないのでしょうか。

      はい、そうなります。現バージョンのプラグインにはリスト表示するショートコード等は組み込まれていません。
      どのようなリスト表示がいいのか思案中でして、なかなかプラグインに組み込めないでいるところです。
      いじる PHP ファイルは、現在使用しているテーマの functions.php ファイルになります。本記事の「xo_event_list ショートコードの PHP コード」セクションのコードを、functions.php に追記してください。また、「スタイル(CSS)」セクションのスタイルを、style.css や管理画面より [外観]-[カスタマイズ]-[追加 CSS] に追記してください。
      あとは、リスト表示したい投稿にショートコード([xo_event_list])を記述してください。

      > ・カレンダーの土日の文字色

      あっ、実はこのような場合に対応するためにクラス(’sunday’ 等)を追加していたつもりだったのですが、抜けていました。
      次のバージョンでは追加したいと思います。それまでは、下記のようなスタイル(CSS)で対応していてください。

      /* 土曜日(週の初めが月曜の場合) */
      .xo-event-calendar .xo-month .dayname td:nth-child(6) {
      color: #ff00ff;
      }
      /* 日曜日(週の初めが月曜の場合) */
      .xo-event-calendar .xo-month .dayname td:nth-child(7) {
      color: #00ffff;
      }

      > ・カレンダーを月曜始まりに

      バージョン 1.3.0 より月曜始まりに対応しました。
      古いバージョンをお使いでしたらバージョンアップして、下記のページを参照してみてください。
      https://ja.wordpress.org/support/topic/xo-event-calendarのカレンダー曜日の並びの変更について/
      https://xakuro.com/wordpress/xo-event-calendar/

      > ・月火水・・・を英語表記に(Mon,Tue,Wed)

      変更方法を記事にしたのでご覧ください。
      https://xakuro.com/blog/wordpress/1433/

      まだまだこなれていないプラグインなので、ご要望がありましたらお気軽にコメントしてくださいね。
      ではでは

  • お客様から、イベント表示ができて管理もカンタンなカレンダーを設置してほしいというご要望をいただき、こちらのプラグインを使わせていただいています。とても使いやすく見やすいカレンダーですね。簡単に管理ができるところがいいとお客様にも好評です。

    一つ教えていただきたいところがあるのですが、
    イベントを表示させるとき、背景色を選ぶと、色によって文字の色が黒か白に自動で出るようなのですが、、。
    文字の読みやすさのご判断と思いますが、文字を白に固定し、背景色は読みやすいものをこちらで選びたいと思っています。
    イベントの文字色を白に固定するのはどのようにしたらいいのでしょうか。
    お忙しいところ申し訳ありませんが、お教えいただけたらうれしいです。
    どうぞよろしくお願いいたします。

    • こんにちは、コメントありがとうございます。
      スタイル(CSS)で変更するのが簡単でいいかと思います。
      スタイルは、下記のような記述で変更できます。
      .month-event-title { color: #eee !important; }
      インラインで設定されているので、!important が必要です。
      お試しください。

      • 早々にお教えいただき、ありがとうございます。
        スタイルでやってみたのですが、きかなかったので、ついお聞きしてしまいました。
        important でうまくいかなければ、こちらのサイトの問題かなと思います。
        お忙しいところ、どうもありがとうございました!
        素晴らしいプラグイン、これからもお客様におすすめしていきたいと思います。ありがとうございました。

  • はじめまして、こちらのカレンダーの使い勝手がとても良く、利用させていただいております。

    この度、利用者から「直近のイベントカレンダー」がまったく動いていないよ。と連絡がありました。

    「XO Event Calendar で直近のイベント一覧を表示」を参考にしていたのですが、プラグインのアップデート後こちらのページに書き換えました。
    更に「format オプションのサンプル」のショートコードを利用し10件分ではなく3件分だけ表示しようとlimit=3としたところ、直近3件ではなく、スタートが遅い3件分だけ表示されてしまいます。

    直近から3件分表示させるにはどうしたらよいでしょうか?
    お忙しい中恐縮ですが、教えていただければ嬉しいです。
    よろしくお願いします。

    • こんにちは、コメントありがとうございます。
      orderby オプションに “event_start_date” を指定するとそのような順序で表示されます。
      投稿日で降順(新しい順)の場合は、orderby を省略するか、または “data” を指定してください。
      例:
      [xo_event_list limit=3 orderby="date" type="short"]

      • お返事ありがとうございます。
        ご提示いただいたコードは投稿日順に3件きちんと並んでおりましたが、大変申し訳ございません、こちらの説明不足でした。

        「10件ほどのイベントを登録。投稿日はすべて同じだが、開催日順に並び替えて開催日が近い3件分を表示したい。」という旨でした。

        [xo_event_list orderby=”event_start_date” type=”custom” format=’%event_date%<a href="%permalink%" rel="nofollow">%title%</a>’]

        の表示が一番近いと思います。この表示のまま、直近3件分。ということは可能でしょうか?
        説明がヘタで申し訳ございませんが、再びよろしくお願い致します。

        • 過去のイベント(イベント開始日)を除くということかしら?
          確かに必要なオプションですね。そのうち対応したいと思います。
          それまでは、下記コード(追加の2行)を119行目(Version 0.3.1)に追加してみてください。

          if ( $atts['orderby'] == 'event_start_date' || $atts['orderby'] == 'event_end_date' ) {
          $args['orderby'] = 'meta_value';
          $args['meta_key'] = $atts['orderby'];
          $args['type'] = 'DATE';
          $args['meta_value'] = date_i18n( 'Y-m-d' ); // 追加
          $args['meta_compare'] = '>='; // 追加
          } else {
          $args['orderby'] = $atts['orderby'];
          }

          • ご指導いただきありがとうございます。お陰様できちんと目的の表示をさせることができました。参考として、表示したコードを置いておきます。

            [xo_event_list order=”ASC” orderby=”event_start_date” type=”custom” format='<a href="%permalink%" rel="nofollow">%title%</a>%event_date%’ limit=3]

          • 返信ありがとうございます。今後の参考にします。
            また何かありましたら気軽にコメントしてくださいね。
            ではでは

          • この投稿と同じことがしたいです。
            現在公開されているverですと、どの部分に追加の記述をすればいいですか?

          • はじめまして、こんにちは。
            この機能は現バージョン(v0.5.0以降)には exclude_end_events オプションとして組み込まれています。
            下記のように exclude_end_events オプションをショートコードに追加してみてください。
            exclude_end_events=1

          • お返事ありがとうございます。
            1番近い開催日を表示することはできたのですが、投稿日が表示されてしまいます。投稿日でなく開催日、開催時間を表示したいのですが、どうしたらいいでしょうか。
            記述したショートコードは以下になります。

            [xo_event_list order=”ASC” exclude_end_events=1 limit=1]

          • デフォルトの standard タイプ(type=”standard”)は投稿日時になります。
            format オプションで表示をカスタマイズしてみてはどうでしょうか?
            例:

            [xo_event_list order="ASC" exclude_end_events=1 limit=1 type="custom" format='<dt><span class="date">%event_start_date%</span></dt><dd><span class="title"><a href="%permalink%">%title%</a></span></dd>']
          • 何度もすみません。
            最終的にやりたいことは、「タグ別ごとの1番近い開催日を表示」「開催日と時間、アイキャッチ画像、タイトルを表示」です。できれば管理画面でイベントごとにURLを設定し、クリックでそのURLに飛べるようにしたいです。

          • できました!タグではなくカテゴリ別でした。
            「type=”custom”」にすると何故かエラーか何も表示されなくなってしまうので、「”detail”」で表示してCSSで要らない項目を非表示にしました。
            URL設定は「VK Link Target Controller」というプラグインでリダイレクトにできました。
            ありがとうございました!

          • 再度質問失礼します。
            『開催時刻(~終了時刻)を過ぎたら次のイベントが表示される』という風にしたいのですが方法はありますか?
            現時点では、イベント開催時刻(~終了時刻)が過ぎても当日中はそのイベントが表示されてしまいます。
            よろしくお願いいたします。

          • すみませんが、現状のバージョンでは(簡単には)できません。
            m(__)m

  • こんにちは。いろいろためしましたが、やっと理想のカレンダーに出会い嬉しいです。

    「スタイル(CSS)」セクションのスタイルを、style.css や管理画面より [外観]-[カスタマイズ]-[追加 CSS] に追記してください。
    あとは、リスト表示したい投稿にショートコード([xo_event_list])を記述してください。

    上記実行したのですが、反映されず・・・
    反映まで時間がかかるとかかりますか?

    また、ふつうのブログと、イベント投稿がかぶる場合、統一したいのですが、どのような方法がありますか?
    初心者でなんとかやっております。
    ご指導よろしくお願いいたします。

    • こんにちは、初めまして。
      xo_event_list ショートコードは、まだプラグインには組み込んでいません。
      この記事の「xo_event_list ショートコードの PHP コード」セクションの、PHP コードをテーマの functions.php にコピペしてください。
      コードのコピーは、コードの右上にマウスカーソルを合わせると表示される「copy」ボタンをクリックするとコピーされます。

      ふつうのブログと、イベント投稿がかぶる場合、統一したいのですが、どのような方法がありますか?

      すみません、「ふつうのブログ(投稿のことかな?)とイベント投稿がかぶる」というのがちょっと分かりません。もう少し具体的に教えてもらえませんか?

      • 早速のご対応ありがとうございます。上記試してみます。

        投稿のことです。
        イベントはイベントで詳細を投稿し、
        店のブログとしてまたイベント紹介で同じ内容を投稿していました。
        ブログ投稿のカテゴリーにおさめたいのと、最新投稿をトップに表示しているため。
        うまく説明できずすみません!!!!!!
        初心者でそもそもの仕組みをちゃんと理解していないようで、すみません。

        • ブログ投稿のカテゴリーにおさめたいのと、最新投稿をトップに表示しているため。

          イベントは、カスタム投稿タイプになります。カスタム投稿タイプに関してはここでは説明しきれないので、すみませんが WordPress の書籍などを読んでみてください。m(__)m

          • ありがとうございます。

            PHP コードをテーマの functions.php にコピペしてください。
            >こちら実行したのですが、反映されませんでした。。。

  • できました!!
    すみませんでした。ありがとうございます。
    いろいろ勉強してみます。

  • こんばんは 初めてコメントします。WPとphpともに初心者です。

    ショートコードをウィジェットに設置しました。
    現在、event_date の箇所が「YYYY年mm月dd日 HH:MM」で表示されています。
    WPの一般設定では、カスタムの「Y.n.j」「H:i」としています。
    dateは、「YYYY.mm.dd」と表示されます。(時間の表示なし)
    event_date を dateと同じように、「YYYY.mm.dd」(時間の表示なし)で表示するには、どこに手を入れれば可能でしょうか?
    よろしくご教示ください。

    • こんにちは、コメントありがとうございます。
      プラグイン本体の不具合でした。最新バージョン(2.1.5)で修正しましたので、アップデートして試してみてください。

  • 石鷹さま
    期待通りの動作になりました。すばやいご対応ありがとうございました!

  • はじめまして。
    非常に使い勝手の良いプラグインを有難うございます。
    リストの表示件数を超えた場合、ページ送りで古いリストを表示することは可能でしょうか。
    方法がございましたら、ご教示いただけると助かります。

    • こんにちは、コメントありがとうございます。
      残念ながら、このショートコードにはページイング機能はありません。m(__)m

  • 石鷹さま
    ページイングの件ご確認いただき、誠にありがとうございました。

  • 便利なプラグインをありがとうございます。
    複数日にまたがったイベントの表示に関してご教授頂けましたら助かります。

    現状では、複数日にまたがったイベントでも最初の日だけが表示されています。
    例えば、3日にわたるイベントがあった場合は、3日ともリストに表示するようにするのは可能でしょうか?

    • こんにちは、コメントありがとうございます。
      残念ながら、このショートコードにはそのような機能はありません。1日毎にイベントを登録することになります。
      m(__)m

  • 素敵なプラグインありがとうございます。
    使わせていただいています。助かります。

    質問なのですが、ショートコードで、
    投稿記事内の「本文」を(字数制限をして)呼び出すことはできますか?

    構造タグはどう記述したら良いでしょうか。
    教えていただけると嬉しいです。

    • こんにちは、コメントありがとうございます。
      ショートコード(バージョン 0.4.0)に、抜粋タグ(%excerpt%)と excerpt_length、more オプションを追加しました。
      お試しください。

      • 石鷹様
        素早いご対応ありがとうございます。
        大変助かります。感謝です。
        無事実装できました。

        moreのみにリンクを貼るというのは可能なのでしょうか?

        • こんな感じでしょうか?

          ショートコード:
          [xo_event_list type="custom" format='<dt><span class="thumbnail">%thumbnail%</span></dt><dd><p><span class="date">%date%</span><span class="category" style="color:%category_font_color%;background-color:%category_color%;">%category%</span></p><p class="title">%title%</p><p class="event-date">開催日: %event_date%</p><p class="excerpt">%excerpt%</p><p><a href="%permalink%">記事を読む</a></p></dd>']

          • なるほど。more を使わないで、permalinkですね。
            (さらに…を削除して対応しました)
            ありがとうございます。助かりました。

            プラグインの開発・配布ありがとうございます。

  • はじめまして
    便利なプラグインを開発・配布して頂き、ありがとうございます。

    イベントページ内の表示についてですが、
    開催日: 2020年7月3日 10:00 AM – 9:00 PM
    カテゴリー: 会議
    と、現在は表示されます。
    時間部分を、「AM 10:00 – PM 9:00 」か「10:00 – 21:00」と表示することは可能でしょうか?

    お手数をおかけしますが、教えて頂けると幸いです。
    宜しくお願いします。

    • こんにちは、コメントありがとうございます。
      そして、報告ありがとうございます。(^^♪

  • こんにちは また教えてください。
    イベント カレンダーの複数月表示をウィジェットに表示しています。
    週の高さですが、1件投稿すると、初期表示の週(イベントなし)より狭く表示されます。
    週の高さが、最低、初期表示の高さ以上に保持することはできますか?

    • こんにちは、コメントありがとうございます。

      .xo-event-calendar .month-week スタイルセレクタで高さを指定するといいかと思います。

      例:
      .xo-event-calendar .month-week { height: 5rem; }

  • こんにちは。ショートコードを使用して、カレンダーなしでカテゴリのみのリストを表示することは可能ですか?

    • こんにちは、コメントありがとうございます。
      こちらのショートコードは、新着のイベントを表示するショートコードなのでカテゴリーのリストを表示することはできません。
      イベントカテゴリーは WordPress の標準の機能であるカスタムタクソノミー (xo_event_cat) です。よって、通常のカスタムタクソノミーのように表示することができます。
      下記は、すべてのイベントカテゴリーの名前を一覧表示するショートコード (xo_event_category_list) を実装するコードです。参考にしてみてください。
      function xo_event_category_list_shortcode() {
      $args = array(
      'taxonomy' => 'xo_event_cat',
      'orderby' => 'name',
      'order' => 'ASC',
      );
      $terms = get_terms( $args );
      $html = '<ul>';
      foreach( $terms as $term ) {
      $html .= '<li><a href="' . get_term_link( $term ) . '">' . $term->name . '</a></li>';
      }
      $html .= '</ul>';
      return $html;
      }
      add_shortcode( 'xo_event_category_list', 'xo_event_category_list_shortcode' );

      以上、よろしくお願いします。

  • はじめまして。
    cocoonテーマを使用しています。
    WP、PHPともに初心者です。

    本記事の「xo_event_list ショートコードの PHP コード」セクションのコードを、functions.php に追記してください。

    とありましたので、追記したところ、ホームページ上部に英語がずらっとならんで(多分追記した内容)しまいます。
    このまま「スタイル(CSS)」セクションのスタイルをstyle cssへの追記をしたらなおるのでしょうか?
    ちょっと怖くて進めなくてコメントさせて頂きました。

    • こんにちは、コメントありがとうございます。
      Cocoon テーマおよび Cocoon 子テーマのデフォルト状態の functions.php の最後に PHP コードを追加すれば問題ないと思います。
      追加する位置によっては、PHP コードの先頭に <&php を 最後に &> を追加しないと PHP コードが実行されずに画面に表示される場合はあります。
      <?php
      if ( defined( 'XO_EVENT_CALENDAR_VERSION' ) ) {
      (省略)
      add_shortcode( 'xo_event_list', 'xo_event_list_shortcode' );
      }
      ?>

      ※ 最後の &> の後は何も(改行や空白も)入力しないでください。
      以上、よろしくお願いします。

  • 先日はありがとうございました。
    無事設置することができました。

    他、質問なのですが、
    現在、

    detail タイプの例:
    [xo_event_list type=”detail”]

    を設置しているのですが、公開日を非表示にしたいです。
    どのようにすればいいでしょうか>

  • こんにちわ!はじめまして。
    とても便利なプラグインをありがとうございます!

    いきなり質問で申し訳ありませんが、 イベントの日付の後に、2020/11/13(金)のように 曜日を追記することは可能でしょうか?
    もし可能でしたら、ご教示の程どうぞよろしくお願いいたします。

    • こんにちは、プラグインのご利用ありがとうございます。
      返信が遅くなってしまいました。すみません m(__)m
      イベントの日付形式ですが、プラグイン本体の方に日付がローカライズされた形式で表示されない(曜日が英語で表示される)不具合がありました。新しいバージョン (2.2.6) で修正しましたので、まずはアップデートを行ってください。
      あとは、WordPress の設定の日付形式を「Y年n月j日 (D)」のように指定すると曜日が表示されるようになります。
      ただし、イベントと関係ないところの日付も変更されてしまいます。イベントだけを変更する場合は、イベントリストショートコードの PHP コードを下記のように変更することで、イベントの日付だけを変更することができます。

      218行目:
      $xo_event_calendar->get_event_date( $post_id ),

      $xo_event_calendar->get_event_date( $post_id, array( 'date_format' => 'Y年n月j日 (D)' ) ),

      • このたびは、早々にご対応いただきまして
        ありがとうございます!
        アップデートし、ご教示いただいた内容に変更したところ、
        無事に表示することができました!
        本当に、ありがとうございましたm(_ _)m

  • 初めまして、何点か質問がございます。
    よろしければお答えいただけますと幸いです。
    以下の二点の変更をしたいのですが、可能でしょうか。

    1. 土日の日付の背景色
    2.カレンダーのラインの色
    3.休日日設定の説明表示の削除

    お手数ですが、よろしくお願いいたします。

    • こんにちは、プラグインのご利用ありがとうございます。
      いずれも CSS で変更することができます。

      1. 土日の日付の背景色
      .xo-event-calendar table.xo-month td:nth-child(1),
      .xo-event-calendar table.xo-month td:nth-child(7) {
      background-color: red;
      }

      2.カレンダーのラインの色
      .xo-event-calendar table.xo-month,
      .xo-event-calendar table.xo-month th,
      .xo-event-calendar table.xo-month td {
      border-color: blue;
      }

      3.休日日設定の説明表示の削除
      .xo-event-calendar .holiday-titles {
      display: none;
      }

      カスタマイズの [追加 CSS] に記述してみてください。

  • 初めまして、こんにちは。
    デザインもシンプルで、とても使いやすいカレンダーをご提供いただきありがとうございます。

    イベントリストの表示について、いくつか分からないことがあり、可能であれば教えていただきたいと思いコメントさせていただきました。

    ①イベントリストをショートコードでdetailで表示させてみました。
    こちらのサイトで紹介されていました見本は背景など、シンプルな白でしたが、こちらは背景がグレーになり、表示させたリストの文字の部分に細い灰色の枠ができてしまいました。背景は変更できましたが、枠の消し方がわかりません。
    枠をなくすことは可能でしょうか。

    ②イベントリストのdetailの表示の「開催日」は時間を改行して2列で表示させることは可能でしょうか。
    例)開催日:2021-01-25 10:00AM-15:00PM を

    開催日:2021-01-25
    10:00AM-15:00PM
    と表示させたいです。

    大変お手数ですが、教えていただけると幸いです。
    よろしくお願いいたします。

    • こんにちは、プラグインのご利用ありがとうございます。

      ①は、下記のいづれかの CSS で消えると思います。消えない場合はご使用のテーマをお知らせください。
      .xo-event-list dd { border: none; }

      .xo-event-list dd { outline: none; }
      または
      .xo-event-list dd { box-shadow: none; }

      ②は、下記のように PHP コードを変更するのが手っ取り早いかと思います。
      218行目:
      $xo_event_calendar->get_event_date( $post_id ),

      $xo_event_calendar->get_event_date( $post_id, array( 'time_format' => '', 'delimiter' => '' ) ) . '<br>' . $xo_event_calendar->get_event_date( $post_id, array( 'date_format' => '' ) ),

      以上、お試しください。

      • お早いご対応ありあとうございます。

        ①枠線は一つ目の
        .xo-event-list dd { border: none; }
        で消すことができました。
        (他の2つでは消えませんでした。)

        ②こちらも思っていたように記載できました。

        ご丁寧に教えていただき
        本当にありがとうございました。

  • コメント失礼します。大変便利なプラグインをありがとうございます。
    1点お尋ねさせてください。
    イベントにACFで「定員」や「申込期限」など追加でカスタムフィールドを設定しています。
    それらをイベントリスト(ユーザー定義タイプ)に開催日やタイトルなどと一緒に表示するには、何か方法がありますでしょうか?あれば教えていただけると幸いです。
    ご不明点などあればお尋ねください。よろしくお願いします。

    • こんにちは、プラグインのご利用ありがとうございます。

      このショートコードはカスタムフィールドの表示に対応していません。PHP コードを変更することになります。
      汎用性はなくなりますが、下記のように変更するのが手っ取り早いかと思います。

      228行目:
      $line = str_replace( $tags, $values, $format );

      $format =
      '<dt><span class="thumbnail"><a href="%permalink%">%thumbnail%</a></span></dt>' .
      '<dd>' .
      '<p>' .
      '<span class="date">%date%</span>' .
      '<span class="category" style="color:%category_font_color%;background-color:%category_color%;">%category%</span>' .
      '</p>' .
      '<p class="title"><a href="%permalink%">%title%</a></p>' .
      '<p>' . esc_html( get_field( '定員', $post_id ) ) . '</p>' .
      '<p>' . esc_html( get_field( '申込期限', $post_id ) ) . '</p>' .
      '<p class="event-date">' . esc_html__( 'Event date:', 'xo-event-calendar' ) . ' %event_date%</p>' .
      '<p class="excerpt">%excerpt%</p>' .
      '</dd>';
      $line = str_replace( $tags, $values, $format );

      get_field() は ACF の関数です。使い方はググってください。(^^♪

      以上、お試しください。

      • 迅速なお返事、ありがとうございます。無事表示できました。
        イベントリストをスライダーで表示する必要があったので、今回お尋ねしたのですが、75行目以降の【 switch ( $atts[‘type’] ) { 】の中で書いていたので、$post_idが取得できず困っていたのですが、教えていただいた方法で表示できました。大変助かりました。

  • こんにちは。
    やっと理想のカレンダーに出会い嬉しいです。
    ありがとうございます^^

    「次の休日:3月10日(水)」のような動的な表示を
    トップページに実装したいと考えております。

    イベントでしたら、xo_event_list から現在の日付と比較するなどして
    実装できそうな気がするのですが、休日の一覧を取得する方法がわからず
    手詰まりの状態です。

    どういった方法が考えられますでしょうか。
    お知恵をいただけましたら幸いです。

    • こんにちは、プラグインのご利用ありがとうございます。

      サンプルコードを書いたので参考にしてください。
      関数の説明はコードのコメントをご覧ください。

      /**
      * 次の休日を取得します。
      *
      * @param string $slug 休日のスラッグ ('all', 'am', 'pm' など)。
      * @param string $start_date 開始日。
      * @param string $end_date 終了日。
      * @return null|string 休日 ('Y-m-d' 形式)。期間内に休日がない場合は null。
      */
      function my_get_next_holiday( $slug, $start_date, $end_date ) {
      $result = null;
      if ( $holiday_settings = get_option( 'xo_event_calendar_holiday_settings' ) ) {
      if ( isset( $holiday_settings[$slug] ) ) {
      $holiday_setting = $holiday_settings[$slug];
      $weeks = array( 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' );
      $time = strtotime( $start_date. '+1 day' );
      $end_time = strtotime( $end_date );
      while( $time <= $end_time ) {
      if (
      ( $holiday_setting['dayofweek'][$weeks[date( 'w', $time )]] || false !== strpos( $holiday_setting['special_holiday'], date( 'Y-m-d', $time ) ) )
      && false === strpos( $holiday_setting['non_holiday'], date( 'Y-m-d', $time ) )
      ) {
      $result = date( 'Y-m-d', $time );
      break;
      }
      $time = strtotime( date( 'Y-m-d', $time ) . '+1 day' );
      }
      }
      }
      return $result;
      }

      my_get_next_holiday() の使用例:
      $date = my_get_next_holiday( 'all', date_i18n( 'Y-m-d' ), date( 'Y-m-d', strtotime( date_i18n( 'Y-m-d' ) . '+30 day' ) ) );
      echo $date;

      • 早速ご返信いただきまして、ありがとうございます。

        無事解決いたしました!^^
        ありがとうございました。

  • こんにちは。
    先日は、迅速にご回答頂きありがとうございました^^

    もうひとつ質問させてください。

    月別にイベントを表示することは可能でしょうか?

    「example.com/xo_event/2021/03/」にアクセスすると
    イベント開始日が、2021/03/01から2021/04/01までの
    イベント一覧が表示されるといったイメージです。

    どういった方法が考えられますでしょうか。
    お知恵をいただけましたら幸いです。

    • すみませんが、そのような機能はありません。
      投稿日とイベント日を同じ日に設定するぐらいでしょうか?
      m(__)m

  • 初めまして。素晴らしいプラグインありがとうございます。
    質問なのですが、月別カレンダーを縦型に表示させることは可能でしょうか。
    良い方法がありましたらご教授ください。
    よろしくお願い致します。

    • こんにちは、プラグインのご利用ありがとうございます。
      縦型とは日付ごとにリスト形式で表示するということでしょうか?この場合は、残念ながら対応していません。m(__)m

  • 初めまして。なほと申します。
    プラグインの公開ありがとうございます。

    サイトに導入するため、カスタマイズをしているのですが、
    わからないことがあり、ご教示いただきたいです。
    イベントを追加する際に複数のカテゴリをつけることが出来る仕様となっていますが、
    複数のカテゴリをリストに表示させることはできませんでしょうか。
    大変お手数ですが、教えていただけると幸いです。
    よろしくお願いいたします。

    • こんにちは、プラグインのご利用ありがとうございます。
      とりあえず detail タイプのみ対応した暫定的なものを用意(下記ページ)しました。あくまでも暫定的なものということをご承知おきください。
      https://xakuro.com/test-code/

      • 早速の返信、コードの作成ありがとうございます。
        customタイプで実装したかったため、
        detail タイプの中身を編集して、
        私の理想のカレンダーリストを作ることが出来ました。

        プラグイン使わせていただきます。
        本当にありがとうございました!

  • こんにちは。またまたお助けくださいませ。
    index.phpの方でイベントカテゴリで分岐して出しわけをしたいのですが、イベントカテゴリの取得ができなくて困っています。
    どうぞよろしくお願い申し上げます。

    — index.php —————————-
    $args = array(
    ‘post_type’ => ‘xo_event’,
    ‘post_status’ => ‘publish’,
    ‘category’ => ‘event’, 1
    );

    $the_query = new WP_Query( $args ); ?>
    have_posts() ) : ?>
    have_posts() ) : $the_query->the_post(); ?>

    イベントはお休みです。

    • お久しぶりです (^^♪
      イベントカテゴリーはタクソノミーでスラッグ名は xo_event_cat です。イベントに割り当てられたカテゴリー(タクソノミー)のタームは get_the_terms() で取得できます。
      例:

      $terms = get_the_terms( $the_query->post->ID, 'xo_event_cat' );
      if ( $terms && ! is_wp_error( $terms ) ) {
      	foreach ( $terms as $term ) {
      		if ( 'イベントカテゴリーのスラッグ' === $term->slug ) {
      			// イベントカテゴリーのスラッグの場合の処理
      		}
      	}
      }
      • あ..あっありがとうございます。゚・(>﹏<)・゚。涙)
        そうか。カスタム投稿って頭から消えてました。
        本当にいつもありがとうございます。優しさにうるうるきてます。
        これで、眠れます!

  • 素晴らしいプラグインをありがとうございます!
    汎用性が高く使い勝手がいいので様々なシーンで活躍してくれています。

    ご質問があります。カテゴリー複数選択でイベントリストを作成したのですが、優先したい方のカテゴリーが表示できず困っています。どこのコードまたは設定を変更したらよいでしょうか?また、カテゴリーの優先順位は何によって決定されるのでしょうか?

    ※下記を試しました
    ・カテゴリーID、カテゴリーslugのabc順で変動があるか(なし)
    ・カテゴリーA・CとカテゴリーB・Cを複数選択するとACではA、BCではCが優先される(優先したいのはAとB)
    ・AまたはBのカテゴリで保存したのちにCを追加選択し保存すると、Bの時だけパーマリンクがCに書き変わる

    • 追記)今の所、ラベルのような気がするのですが…
      カテゴリー間の優先順を任意で設定する方法があれば教えていただけないでしょうか。

      • こんにちは
        カテゴリーの優先順は名前(ラベル)順です。
        スラッグ名順の場合は、下記コードで変更することができます。

        子テーマの functions.php に、

        add_filter( 'wp_get_object_terms_args', function( $args, $object_ids, $taxonomies ) {
        	if ( in_array( 'xo_event_cat', $taxonomies ) ) {
        		$args['order'] = 'ASC';
        		$args['orderby'] = 'slug';
        	}
        	return $args;
        }, 10, 3 );

        任意のカテゴリーを選択する場合は、プラグイン(Simple Custom Post OrderIntuitive Custom Post Order など)を使用するといいかと思います。

        • ご丁寧にご回答いただきありがとうございます!
          今後もこちらで活用させて頂きます。引き続きお世話になります。

  • 使いやすくシンプルなカレンダーをありがとうございます。
    カレンダーとイベントのショートコードをHPトップページで載せています。
    先日(2022/02/05)ウィジェットの変更で場所を変更して表示しました。変更したときは、表示なったのですが、現在(2022/02/07)ショートコードがそのまま表示されてしまいました。
    何か間違ったことをしているのでしょうか?
    教えていただけるとありがたいです。
    どうしたらいいのでしょうか?

    • はじめまして、こんにちは。
      ショートコード(xo_event_list)のコードは functions.php に存在していますか?テーマの更新などで上書きされていませんか?ご確認ください。

      • 返信ありがとうございます。
        確認方法がわかりません。上書きされてしまって存在しなくなってしまったのでしょうか

        • xo_event_list ショートコードはプラグイン自体には搭載されていません。このページのコードを、テーマの functions.php に追記する必要があります。

          • ショートコード[xo_event_list limit=”7″]を使いました。日付が入力日になってしまいます。入力日ではなく、イベント開催日を表示するにはどうしたらいいでしょうか。

          • ショートコードの format パラメーターや、PHP コード(shortcode_atts_xo_event_list フィルターフック)で変更することができます。

            ショートコードの format パラメーターの例:

            [xo_event_list limit="7" type="standard" format='<dt><span class="date">%event_start_date%</span></dt><dd><span class="category" style="color:%category_font_color%;background-color:%category_color%;">%category%</span><span class="title"><a href="%permalink%">%title%</a></span></dd>']

            PHP コードの例:
            下記コードをテーマの functions.php に追記してください。

            function filter_shortcode_atts_xo_event_list( $out, $pairs, $atts, $shortcode ) { 
            	if ( 'standard' === $out['type'] ) {
            		$out['format'] = 
            			'<dt><span class="date">%event_start_date%</span></dt>
            			<dd>
            			<span class="category" style="color:%category_font_color%;background-color:%category_color%;">%category%</span>
            			<span class="title"><a href="%permalink%">%title%</a></span>
            			</dd>';
            	}
            	return $out; 
            }
            add_filter( 'shortcode_atts_xo_event_list', 'filter_shortcode_atts_xo_event_list', 10, 4 );
          • すぐに対応していただきありがたい限りです。
            。ショートコードの format パラメーターを使い表示することができました。ほんとによかったです。
            重ねてお伺いさせてください。カレンダーリストだけ年月日(曜日)で表示したいと思い、過去のコメント(2020/11/14)のPHP218行目変更を試したのですが、変更なりませんでした。何か気を付けないといけないところなどありますか?

          • イベントリストの日付の表示形式は下記コードで変更することができます。

            147行目:

            $date_format = get_option( 'date_format' );

            $date_format = 'Y年n月j日 (D)';

            イベント開始日のみの場合は、

            216行目:

            mysql2date( $date_format, get_post_meta( $post_id, 'event_start_date', true ) ),

            mysql2date( 'Y年n月j日 (D)', get_post_meta( $post_id, 'event_start_date', true ) ),
      • 何度もすみません。phpをもう一度入力してみたところ、表示されるようになりました。こんな素人の質問にも丁寧に答えていただきありがとうございます。

  • こんにちは、とても使いやすいプラグインをありがとうございます。
    現在、event_start_minuteとevent_start_hourを呼び出してイベントの開始時刻もリストに表示できるようにショートコードのphpを書き換えています。
    そのため同じ日に複数のイベントがある場合はイベントの開始時刻順に表示したいと考えています。
    暫定的にプラグインのadmin.phpを編集してイベント開始時刻まで考慮したUNIX時刻を保持するフィールドを作成しその値でソートすることで対応をしていますが、更新を考えるとプラグインのphpはあまり変更したくなくて。。。
    ショートコードのphpでできる実装方法があれば教えていただきたいです。

    • はじめまして、こんにちは。
      すみません、イベント開催日 (event_start_date) および終了日 (event_end_date) のソート (orderby) では時刻を考慮していませんでした。
      コードを修正(0.6.0)しましたので試してみてください。m(__)m

      • 早速のご対応ありがとうございます。修正版を使用してみました。
        orderby=’event_start_date’オプションだけなら時間順にソートすることができました。しかし、orderby=’event_start_date’とexclude_end_events=’exclude_end_events’のオプションを両方つけるとフィルタはされるのですがソートされなくなってしまいました。
        なにか対応策はございませんでしょうか?

  • こんにちは。はじめまして。
    とても使いやすく、シンプルなカレンダープラグインで大変重宝させていただいています。
    質問なのですが、登録した休日と今日の日付を比較して「本日開園日/本日休園日」といった表示をさせることは可能でしょうか?
    コメント欄を拝見して次回お休みの日を表示させるコードを参考にしようとしたのですが、上手く活用できず。。。
    ぜひ、ご教授いただけると嬉しく思います。
    よろしくお願い申し上げます。

    • はじめまして、こんにちは。
      サンプルコードを書いたので参考にしてください。

      /**
       * 指定日が休日かどうかをチェックします。
       *
       * @param int $timestamp チェックする日 (タイムスタンプ)。
       * @param string $slug   休日のスラッグ ('all', 'am', 'pm' など)。
       * @return bool 休日の場合は true、休日以外の場合は false を返します。
       */
      function my_is_holiday( $timestamp, $slug ) {
      	if ( $holiday_settings = get_option( 'xo_event_calendar_holiday_settings' ) ) {
      		if ( isset( $holiday_settings[$slug] ) ) {
      			$holiday_setting = $holiday_settings[$slug];
      			$weeks = array( 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' );
      			if (
      				(
      					$holiday_setting['dayofweek'][$weeks[date( 'w', $timestamp )]]
      					|| false !== strpos( $holiday_setting['special_holiday'], date( 'Y-m-d', $timestamp ) ) 
      				)
      				&& false === strpos( $holiday_setting['non_holiday'], date( 'Y-m-d', $timestamp ) )
      			) {
      				return true;
      			}
      		}
      	}
      	return false;
      }

      my_is_holiday() の使用例:

      if ( my_is_holiday( current_time( 'timestamp' ), 'all' ) ) {
      	echo '<p>本日休園日</p>';
      } else {
      	echo '<p>本日開園日</p>';
      }
      • ご返信いただき、ありがとうございます!
        非常に勉強になりました。早速実装してみようと思います!
        プラグインも、引き続き愛用させていただきます。
        ありがとうございました m(_ _)m

  • こんにちは。とても使いやすいカレンダーをありがとうございます。イベントをリスト表示する感じの良いプラグインがなかったので嬉しく思っております。
    [xo_event_list]でリスト表示するには、ショートコード(xo_event_list)のコードを、functions.php に追記する必要あると書いておられました(2022年2月9日10:23)ので、追記したのですが、リスト表示されません。追記したコードは、石鷹様が、PHPの例として書かれていたものを追記しております。PHPなどあまり詳しくないのですが、ご教授願えないでしょうか。よろしくお願い申し上げます。

    • はじめまして、こんにちは。
      コードは PHP コードなので、<?php?> の間に記述する必要があります。functions.php の最終行が ?> であれば、その直前に記述してみてください。
      なお、コードを一部変更しましたので、変更したコードで試してみてください。

      • 石鷹様

        できました!ありがとうございました。イベントのリスト表示が重要な要素だったので大変助かりました。引き続き頑張ってください。

        • 石鷹様
          もう一つ教えてください。イベントのリスト表示において、
          今後のイベント(当日は今後に入る)と終了したイベントに分けたいです。
          しかも、終了したイベントは、カテゴリーでフィルターしたいと考えています。
          ご教授ください

          • 新規に compare_event オプションを追加(バージョン 0.7.0)しました。このオプションで今後のイベント(compare_event=”greaterOrEquals”)、終了したイベント(compare_event=”less”)を指定できます。
            カテゴリーは category パラメーターで指定できます。

  • 石鷹様

    早速の対応ありがとうございます。
    連休は予定がたくさんありますので、明けてから試してみます。
    対応に感謝です!

    • 石鷹様

      対応ありがとうございました。
      できました!
      個人的な申し出に対応していただき感謝いたします。
      今後ともよろしくお願い申し上げます。

  • 初めまして。
    とても使いやすいカレンダーをありがとうございます。
    以前別の方がコメントをされていたのですが、
    (2018年6月14日 16:37)同じ内容でつまづいております…

    イベントを一覧で表示する際、上から開催日の古いもの順で並べたいのですが、現在順番が開催日の新しいものからになっており、皆さんのコメントを読み以下のように変えてみたのですが変更することができません…

    [xo_event_list order=”ASC” limit=3 orderby=”event_start_date” type=”custom” format=’%event_date%<a href="%permalink%" rel="nofollow ugc">%title%</a>’]

    どのようにすればいいかご教授いただけますと幸いです。よろしくお願いいたします。

    • はじめまして、こんにちは。
      「order=”ASC”」のダブルクォーテーション (“) が全角文字になっているようです。入力し直してみてください。

      • 石鷹様
        早速のご返信ありがとうございます。
        全角を修正しましたらできました。全く気づかずお恥ずかしいです…
        ありがとうございました!

        ちなみにもう一点お伺いしてもよろしいでしょうか?
        パーマリンクが現在タイトルになっているのですが、こちらは数字にすることは可能なのでしょうか?ご教示いただけますと幸いです。よろしくお願いいたします。

        • イベント投稿のスラッグの初期値を数字にする方法ではどうでしょうか?
          下記コードをテーマの functions.php に追加すると、スラッグの初期値が投稿 ID になります。

          add_filter( 'wp_unique_post_slug', function( $slug, $post_ID, $post_status, $post_type ) {
          	if ( 'xo_event' === $post_type ) {
          		$slug = $post_ID;
          	}
          	return $slug;
          }, 10, 4 );
          • 石鷹様
            ご返信が遅くなり大変申し訳ございませんでした…
            教えていただきましたコードの記載で数字投稿にできました。
            ご丁寧にアドバイスいただきありがとうございました!
            これからもプラグインを利用させていただきます。
            本当にありがとうございました!

  • こんばんは。先日はご丁寧にアドバイスいただきありがとうございました。
    申し訳ないのですが、もう一点つまずいてしまい…
    ご教示いただけるとありがたいです。

    終了したイベントを非表示にしたいのですが、「exclude_end_events」のショートコードを追記するだけではできないのでしょうか?

    [xo_event_list order="ASC" limit=5 exclude_end_events orderby="event_start_date" type="custom" format='%event_date%<a href="%permalink%" rel="nofollow ugc">%title%</a>']

    お手数おかけして申し訳ございません。よろしくお願いいたします。

    • こんばんは
      すみません、説明不足でした。真理値 (1など) を指定してください。
      exclude_end_events=1

      • ご返信ありがとうございます。
        無事終了したイベントを非表示にすることができました!
        素人の質問にも丁寧にお答えいただき本当に感謝します。
        ありがとうございました。

  • はじめまして。
    下記ご教示いただけますでしょうか。

    1ヶ月間あるイベントで、
    土日の定休日だけ反映させたくありません。
    どうしたらよいでしょうか。

    ご教示いただけますと幸いです。

    • はじめまして、こんにちは。
      PHP コードを変更する必要があります。
      例:
      226行目: $custom = get_post_custom( $post_id ); の次の行辺りに、

      $t = strtotime( $custom['event_end_date'][0] );
      if (
      	( strtotime( '2023-01-01' ) <= $t && $t <= strtotime( '2023-01-31' ) )
      	&& in_array( date( 'w',  $t ), [ 0, 6 ] ) // 0=日曜, 1=月曜, ...
      ) {
      	continue;
      }
  • はじめまして。
    https://xakuro.com/blog/wordpress/1376/#comment-510
    ↑の投稿を参考にさせていただき「お休みor営業中」の表示を出すことには成功したのですが、
    こちらのプラグインでは「営業時間」を設定して営業時間外にも「お休み中」の文字を表示することは難しいでしょうか?
    phpに詳しくなく大変恐縮なのですが、もし可能でしたらご教示いただけますと幸いです。よろしくお願いいたします。

    • はじめまして、こんにちは。
      下記のようなコードではどうでしょうか。

      $time = current_time( 'timestamp' );
      if ( my_is_holiday( $time, 'all' ) ) {
      	echo '<p>本日休園日</p>';
      } else {
      	$datetime = new DateTime( '@' . $time );
      	if ( new DateTime( '09:00' ) <= $datetime && $datetime < new DateTime( '18:00' ) ) {
      		echo '<p>営業中</p>';
      	} else {
      		echo '<p>営業時間外</p>';
      	}
      }
      • お返事ありがとうございます!!
        度々の質問申し訳ございません。
        いただいたコードの「開始時間」と「終了時間」を、管理画面のどこかに入力する欄を作るのは可能でしょうか?

        • 可能かどうかだと可能ではありますが、それなりの作業(コーディング)が必要になります。m(__)m

          • ご返信ありがとうございます、お忙しいところ恐れ入ります。
            営業時間用のカスタム投稿を作ってそちらのほうからデータを引っ張るように試してみようと思います!
            素晴らしいプラグイン、ありがとうございます。

  • 素晴らしいプラグインと数々のショートコードを提供いただきありがとうございます。
    ショートコードなしで、イベントの開始日の取得をしたいと考えております。
    現在は下記のようなコードでリストを取得しCSSを当てています。
    イベントの開始日を取得したいのですが、どのようなコードを当てたたらよろしいでしょうか?
    お手隙の際に回答いただけますと幸いです。

    ******** 今回の質問箇所 ********

    ココ

    ******** 全体 ********

    イベント
    array(‘xo_event’), ‘posts_per_page’ => 4);
    $get_posts = get_posts($args);
    if ( !empty($get_posts) ): ?>

    <a href="”>
       

    $total ){
    echo “NEW”;
    }
    ?>

    <a href="/event” class=”btnlinestretches2″>カレンダーはこちら

    • はじめまして、こんにちは。
      イベント開始日はカスタム フィールドに保存されています。キー名は event_start_date です。
      下記のようなコードで取得することができます。
      $start_date = get_post_meta( $post->ID, 'event_start_date', true );
      イベント情報の他のフィールドもカスタム フィールドです。
      開始日: event_start_date
      開始時間(時): event_start_hour
      開始時間(分): event_start_minute
      終了日: event_end_date
      終了時間(時): event_end_hour
      終了時間(分): event_end_minute
      終日: event_all_day
      データ形式は var_dump() して確認してみてください。

  • 石鷹さま
    素晴らしいプラグインの開発ありがございます。wordpress初心者です。
    サポートをお願いしたことがあります。
    wordpressでサイトを構築しており、イベントカレンダーを使用させていただいております。
    固定ページの作成に、Elementor Pro を使っておりますが、以下のショートコードで、Elementorでサーバーエラー403が発生します。
    以下のコードから、カテゴリーの”style”の部分を削除すると動作いたしますが、カテゴリーのフォントとバックグランドのカラーが指定できないために、ページでの表示がわかりにくくなってしまいます。
    改善方法はございませんでしょうか。どうぞよろしくお願い申し上げます。

    エラーとなるショートコード
    [xo_event_list exclude_end_events="greaterOrEquals" type="standard" format='%event_start_date%%category%<a href="%permalink%" rel="nofollow ugc">%title%</a>']

    エラーとはならいがカテゴリーカラーがなく表示がわかりにくいコード
    [xo_event_list exclude_end_events="greaterOrEquals" type="standard" format='%event_start_date%%category%<a href="%permalink%" rel="nofollow ugc">%title%</a>']

    • こんにちは
      カテゴリーのスラッグを返す %category_slug% タグを追加するように、PHP コードを更新(0.10.0)しました。
      下記のショートコードで試してみてください。
      [xo_event_list type="custom" exclude_end_events=1 format='<dt><span class="date">%date%</span></dt><dd><span class="category category-%category_slug%">%category%</span><span class="title"><a href="%permalink%">%title%</a></span></dd>']

      ※ 403 は WAF かなと……

  • 石鷹 さま

    早速ありがとうございました。
    また報告させていただきます。
    WAF、、そうですね。確認してみます。

  • 石鷹 さま
    対応ありがとうございました。
    見栄えの良いサイトになりました。
    引き続きよろしくお願い申し上げます。

  • はじめまして。
    こちらのカレンダーよく利用させていただいております。
    いつもありがとうございます。
    以前からイベントリストショートコードを利用させていただいていたのですが、急にホームページの表示がおかしくなってしまったので調べてみたところ、こちらのPHPにエラーが起きたという表示でした。
    実際にPHPを非表示にするとホームページの表示は直りました。
    ただ、PHPを入れないとイベントリストが利用できなくて困っています。
    お力を貸していただけないでしょうか?
    よろしくお願いいたします。

    • はじめまして、こんにちは。
      すみません、プラグインの仕様を変更してしまいました。プラグイン側はこのままの仕様でいこうと思いますので、ショートコードの PHP コードを変更(バージョン0.10.0)しました。お手数ですが更新して試してみてください。m(__)m

      • 石鷹様
        PHPコードを書き換えたら直りました!
        ありがとうございました。

  • こんにちは。
    以前、https://xakuro.com/blog/wordpress/1376/#comment-509 のコメントをさせていただいたヤマです。ご無沙汰しております。
    今回こちらのカレンダーリストショートコードについて、表示されるイベントを期間で区切ることが可能か教えていただきたくコメントいたしました。
    具体的には「2022年分のイベント一覧」「2023年分のイベント一覧」というように区切って表示をしたいと考えています。
    もし可能でしたらご教授頂けますと幸いですm(_ _)m

    • 重ねてのコメントになりすみません…!
      自分の方でショートコードのPHPコードのargs=array内にyearを入れたら表示年が変えられました!
      今回のパターンでは最新年のみ表示できたら大丈夫ですので、こちらの指定で進められそうです。
      コメント欄をお借りしまして恐縮ですが、今後もこちらのプラグインを活用させていただきます。
      いつも本当にありがとうございます!

  • お世話になります。二つ質問があります。
    ① event organizer のプラグインで作成したイベントをCSVファイルで取得できたとしたら、インポートは可能でしょうか。
    ② このプラグインで作成したイベントを年度ごとにまとめたいのですが、期間でイベントフィルターするにはどうしたら良いでしょうか(過去に同様の記事を見つけられませんでした)。

    • こんにちは
      ① データの持ち方が違うのでできません。
      ② 期間をフィルターする機能はありません。PHP コードをカスタマイズする必要があります。
      お役に立てずにすみません。m(__)m

  • 初めまして。いつもこちらのカレンダーを使用させていただいております。
    ありがとうございます。
    今後アレンジをして使っていきたいと考えており、初心者の質問で大変申し訳ないのですが、お聞かせいただいてもよろしいでしょうか?
    ①こちらのカレンダーで作ったカテゴリーは通常の投稿のカテゴリーとは違うカスタムタイプとのことですが、それらを同期(一緒に表示させその中から選択)させることは可能なのでしょうか?
    ②終了したイベントをカテゴリーで分けて一覧より見えなくしたいと考えているのですが、
    2022年10月8日 15:17にご返信されています回答のやり方がよくわからず・・・申し訳ありませんがご教示いただけますと幸いです。
    「新規に compare_event オプションを追加(バージョン 0.7.0)しました。このオプションで今後のイベント(compare_event=”greaterOrEquals”)、終了したイベント(compare_event=”less”)を指定できます。
    カテゴリーは category パラメーターで指定できます。」
    よろしくお願いいたします。

    • はじめまして、こんにちは
      ①の「同期(一緒に表示させその中から選択)」および②の「カテゴリーで分けて一覧より見えなくしたい」というのが具体的に何をされたのかよくわかりません。もう少し具体的にどうしたらいいか教えていただけますか?

  • ご返信ありがとうございます。
    説明不足で誠に申し訳ございません・・・
    ①ワードプレスの通常の投稿(ブログ)で作成するカテゴリーと、こちらのカレンダーで作成するカテゴリーが同列ではなく、別々のもの扱いになってしまうのですが、一緒にまとめることができないかというご相談です。
    例えば「おすすめ」というカテゴリーを作って、ブログとカレンダー両方の中からおすすめのものだけを表示させられたらいいなと思うのですが・・難しいでしょうか?
    ②石鷹様がサイト内でご提示されていらっしゃる方法で、終了イベントがカレンダーのリスト表示からは削除できているのですが、使用しているワードプレスのイベント一覧からは削除できないため、「終了したイベント」といったカテゴリーを作って、そのカテゴリーに入ったものは見えないようにするなどができればいいなと思ったですが、一部のカテゴリーを指定して非表示にするといったことは可能なのでしょうか?
    もし可能でしたら、ご教示いただけたら嬉しいです。よろしくお願いいたします。

    • > ①
      基本的にはできません。m(__)m
      > ②
      現状では特定のカテゴリーを除外することはできません。表示するカテゴリーを複数指定(カンマ区切り)することで対応できませんか?
      ショートコード例:
      [xo_event_list category="cat1,cat3,cat4"]

      • ご返信ありがとうございます。
        かしこまりました!
        ②については試してみたいと思います。
        ご教示ありがとうございました!

  • はじめまして。
    求めていたプラグインで大変重宝しております。ありがとうございます。
    リスト表示の他に、当日のイベントのみサムネイルを横並びで表示させることは可能でしょうか?
    ご教授いただけると嬉しく思います。よろしくお願いいたします。

    • はじめまして、こんにちは。
      このショートコードではできません。カスタマイズ(PHP コードを変更)する必要があります。

      • 簡単ではありますが、当日のイベントのアイキャッチ画像を表示するだけのショートコードのサンプルコードを書きました。ご参考まで。

        function xo_event_posts_shortcode( $atts ) {
        	$date = date_i18n( 'Y-m-d' );
        
        	$atts = shortcode_atts( array(
        		'start' => $date,
        		'end'   => $date,
        	), $atts );
        
        	$args = array(
        		'post_type'      => 'xo_event',
        		'post_status'    => 'publish',
        		'posts_per_page' => -1,
        		'meta_key'       => 'event_start_date',
        		'orderby'        => 'meta_value',
        		'order'          => 'DESC',
        		'type'           => 'DATE',
        		'meta_query'     => array(
        			'relation' => 'AND',
        			array( 'key' => 'event_start_date', 'value' => $atts['end'], 'compare' => '<=', 'type' => 'DATE' ),
        			array( 'key' => 'event_end_date', 'value' => $atts['start'], 'compare' => '>=', 'type' => 'DATE' ),
        		),
        	);
        
        	$output = '';
        
        	$the_query = new WP_Query( $args );
        	if ( $the_query->have_posts() ) {
        		$output .= '<ul>';
        		while ( $the_query->have_posts() ) {
        			$the_query->the_post();
        
        			$output .= '<li>';
        			$output .= '<a href="' . get_permalink() . '" title="' . esc_attr( get_the_title() ) . '">';
        			$output .= get_the_post_thumbnail( $the_query->post->ID );
        			$output .= '</a>';
        			$output .= '</li>';
        		}
        		wp_reset_postdata();
        		$output .= '</ul>' . "\n";
        	}
        
        	return $output;
        }
        
        add_shortcode( 'xo_event_posts', 'xo_event_posts_shortcode' );
  • いつもお世話になっております。とても素晴らしいプラグインをありがとうございます。幾度かご質問させていただいております。
    このプラグインは、リスト表示で利用させていただいております。
    さて、今回のご質問は、wordpress テーマをLightningからAstraへ変更したところ、LightningではStanderd表示されていたのですが、Astraに変更したところ、Detail表示のようになってしまい、カテゴリーの背景カラーも文字数に応じて長さが異なっているために、見栄えが悪くなってしまいました。Astraでも整列したStanderd表示にしたいのですが、可能でしょうか。
    言葉足らずでわかりにくいかもしれません。よろしくお願い申し上げます。

    • CSS が効いていないと思われます。
      CSS を別の場所に移行(現状が style.css ならカスタマイズの追加 CSS などへ)してみてはどうでしょうか?

      • 石鷹 さま

        ご返信ありがとうございました。
        アドバイス通りCSSを移行してみたところ解消しました!
        単純なことでした。
        どうもありがとございました。

  • 石鷹様
    無事にPHPに追加でき、リスト表示できました。ありがとうございました。
    コメントに返信できなかったので新たにコメントしました。
    読んでいただいたら削除してください。
    先ほどの問い合わせも、返信にコメントしているようですし、私の確認不足なので削除していただいてかまいません。
    お忙しいところ、ありがとうございました。

    • 出来たようでよかったです。
      > 先ほどの問い合わせも、返信にコメントしているようですし、私の確認不足なので削除していただいてかまいません。
      了解です。
      今後も何かありましたら気軽にコメントしてください (^^♪

  • こんにちは。
    こちらのプラグインを重宝させてもらっています。
    いつも素晴らしいプラグインありがとうございます!!

    質問なのですが、
    同ページにカレンダーとリストを載せています。
    カレンダーの月を変えるとその月のリストのみを表示させることは可能でしょうか?
    教えいただけると幸いです。
    (説明下手ですみません…)

    • はじめまして、こんにちは。
      現バージョンではできません。コードを書くことになります。
      イベントのタイトルのみを表示するような簡単なものであれば、下記のようなコードになります。

      function my_event_calendar_month( $html, $args, $month_index, $events ) {
      	if ( $events ) {
      		$footer = '<div class="events-list">';
      		foreach ( $events as $event ) {
      			$post = $event['post'];
      			$footer .= '<p>' . esc_html( $post->post_title ) . '</p>';
      		}
      		$footer .= '</div>';
      		$html .= $footer;
      	}
      	return $html;
      }
      add_action( 'xo_event_calendar_month', 'my_event_calendar_month', 10, 4 );

      参考ページ:
      https://xakuro.com/wordpress/xo-event-calendar/xo-event-calendar-month/

  • 石鷹様
    柔軟なプラグインのご提供ありがとうございます。
    下記ご教示ください。

    終了イベントのみ取得したいのですが、オプションで下記パラメータを記入しても開催前のイベントも表示されてしまいます。過去のコメント見ながらいろいろ試してみましたがうまくいきませんでした。
    どう記述したらよろしいでしょうか?
    compare_event=”less” exclude_end_events=”1″
    よろしくお願い申し上げます。

    • はじめまして、こんにちは。
      オプションは合っています。ダブルクォーテーション(“)が全角になっていたりしませんか?コピペではなく手入力でダブルクォーテーションを入力し直してみてください。

      • ありがとうございます。
        できました。
        初心者丸出しの初歩的なことでお恥ずかしい限りです。以後気を付けます。

  • はじめまして!非常に使いやすいプラグインをご提供いただきありがとうございます。とても理想的です。

    こちらのブログでご紹介されているリスト形式でイベントを表示しているのですが、何もない日も表示させたいです。
    四角いカレンダー形式の方は何もない日も表示されているので、リストの方も表示されると嬉しいです。

    よろしくお願いいたします。

    • はじめまして、こんにちは。
      何もない日は投稿自体が存在しないので表示できません。m(__)m

      • お忙しいところご返信ありがとうございます!
        そうですよね、、すみません( ;∀;)
        これからも応援しております!

  • 初めまして、本当に使いやすくカスタマイズができるイベントカレンダーなので助かっております。ありがとうございます。
    ショートコードではなく、通常のカスタム投稿のループでイベント情報を表示しているのですが、カテゴリーの色を取得するカスタムフィールドはあるのでしょうか?もしくは取得方法があればご教授いただければ幸いです。
    よろしくお願いいたします。

    • こんにちは、はじめまして。
      カテゴリーの色を取得または表示するようなテンプレートタグは現バージョンにはありません。
      多少のコードを書くことになります。

      サンプル:

      $cat_color = '#000';
      
      $cats = get_the_terms( 0, 'xo_event_cat' );
      if ( $cats && ! is_wp_error( $cats ) && count( $cats ) > 0 ) {
      	$cat = $cats[0];
      	$cat_data = get_option( 'xo_event_calendar_cat_' . intval( $cat->term_id ) );
      	if ( $cat_data && $cat_data['category_color'] ) {
      		$cat_color = $cat_data['category_color'];
      	}
      }
      
      echo esc_html( $cat_color );

      とりあえずコードの説明は省略しますが、不明点があれば返信ください。

      • サンプルコードありがとうございました。
        カテゴリーの色の取得できました!!
        本当に助かりました。これからもイベントカレンダー使わせていただきます。
        感謝です!

  • いつもお世話になっています。2度目の質問になります。
    通常のカスタム投稿のループでイベント情報を表示する場合は、イベント終了のものを判断して、CSSにて透過表示にしてリンクできないように設定しています。

    カレンダー表示では、イベントが終了しているのかどうかの判断ができません。イベントが終了しているもののカテゴリーの色を薄くしたり(もしくはグレー)、リンクできないようにすることは可能でしょうか。

    たびたびの質問で、申し訳ありませんがご教授よろしくお願いします。

  • 石鷹様
    前に表示の不具合を対処して頂きました西と申します。
    その節は有難うございました。
    大変助かりました。
    追加で教えて下さい。(当方初心者です)
    ウィジェットのカレンダーの下にイベントリストを表示したいのです。
    こちらの記事に有ります「ショート」タイプで十分です。
    テキストウィジェットに”[xo_event_list type=”short”]”と入れてみましたが動きません。
    やり方を教えて下さい。
    また、過去イベントは表示させないで、今後のイベントも最大で5個くらいにしたいのですが出来るでしょうか?

  • 西です。
    > 仕様も固まってはいないので、プラグインには当面組み込まない予定です。見落としておりました。
    失礼しました。

  • 石鷹 さま

    お世話になっております。
    リスト表示について、ご質問です。

    リスト表示の中で、新たにリスト表示されたものや更新されたものに対して、「new」のラベルをつけるとか、何か目立たせることは可能でしょうか。

    xo-event ではなく、テーマとか、プラグインの仕様かもしれませんが、不明なために、質問させてください。

    どうぞよろしくお願い申し上げます。

コメントを残す

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

日本語でコメントを入力してください。(スパム対策)