XO Event Calendar 2024年の祝日

毎年恒例の祝日の記事です。今年も特筆すべきことはなにもありません (^^;。祝日法の原則通りです。

2024年カレンダー

1月
31123456
78910111213
14151617181920
21222324252627
28293031123
2月
28293031123
45678910
11121314151617
18192021222324
252627282912
3月
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456
4月
31123456
78910111213
14151617181920
21222324252627
2829301234
5月
2829301234
567891011
12131415161718
19202122232425
2627282930311
6月
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
7月
30123456
78910111213
14151617181920
21222324252627
28293031123
8月
28293031123
45678910
11121314151617
18192021222324
25262728293031
9月
1234567
891011121314
15161718192021
22232425262728
293012345
10月
293012345
6789101112
13141516171819
20212223242526
272829303112
11月
272829303112
3456789
10111213141516
17181920212223
24252627282930
12月
1234567
891011121314
15161718192021
22232425262728
2930311234

2024年 (令和6年) の祝日

2024年1月1日 元日
2024年1月8日 成人の日
2024年2月11日 建国記念の日
2024年2月12日 振替休日
2024年2月23日 天皇誕生日
2024年3月20日 春分の日
2024年4月29日 昭和の日
2024年5月3日 憲法記念日
2024年5月4日 みどりの日
2024年5月5日 こどもの日
2024年5月6日 振替休日
2024年7月15日 海の日
2024年8月11日 山の日
2024年8月12日 振替休日
2024年9月16日 敬老の日
2024年9月22日 秋分の日
2024年9月23日 振替休日
2024年10月14日 スポーツの日
2024年11月3日 文化の日
2024年11月4日 振替休日
2024年11月23日 勤労感謝の日

XO Event Calendar 用

XO Event Calendar プラグインの休日設定に設定する場合は下記をコピーして使用できます。

2024/1/1
2024/1/8
2024/2/11
2024/2/12
2024/2/23
2024/3/20
2024/4/29
2024/5/3
2024/5/4
2024/5/5
2024/5/6
2024/7/15
2024/8/11
2024/8/12
2024/9/16
2024/9/22
2024/9/23
2024/10/14
2024/11/3
2024/11/4
2024/11/23

コメント

  • 石鷹様

    XO Event Calendarを当サイトに利用させていただこうと、WordPress初心者ではありますがXO Event Calendarを勉強中です。

    同じ日に複数のイベントを横並びに表示させる、セルの右端に到達したら改行して表示させることは本プラグインの構成上可能でしょうか?イベント名は漢字一文字としています。

    自分なりに解析をしていますが、無理なのではと諦めかけているところで、お力添えをいただけると助かります。

    イメージ画像を用意していますので、必要でしたらお見せいたします。

    以上です。

    • はじめまして、こんにちは。
      基本的にはできません。
      xo_event_calendar_month フィルターフックあたりで、丸ごとカレンダーを出力するなどすれば可能ではありますが、それなりのコードを書くことになります。
      いちおうサンプル コードを載せておきますが、サポートの対象外ということでお願いします。
      PHP コード:

      if ( defined( 'XO_EVENT_CALENDAR_VERSION' ) ) {
      
      	function my_get_holiday_slug( $holidays, $holiday_settings, $date ) {
      		$weeks = array( 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' );
      		$slugs = array();
      
      		foreach ( $holidays as $holiday ) {
      			if ( array_key_exists( $holiday, $holiday_settings ) ) {
      				if ( ( $holiday_settings[ $holiday ]['dayofweek'][ $weeks[ gmdate( 'w', $date ) ] ] ||
      					strpos( (string) $holiday_settings[ $holiday ]['special_holiday'], gmdate( 'Y-m-d', $date ) ) !== false ) &&
      					strpos( (string) $holiday_settings[ $holiday ]['non_holiday'], gmdate( 'Y-m-d', $date ) ) === false
      				) {
      					$slugs[] = $holiday;
      				}
      			}
      		}
      
      		return $slugs;
      	}
      
      	function my_xo_event_calendar_month( $html, $args, $month_index, $events ) {
      		global $wp_locale, $xo_event_calendar;
      
      		if ( ! isset( $args['base_year'] ) ) {
      			$args['base_year'] = $args['year'];
      		}
      		if ( ! isset( $args['base_month'] ) ) {
      			$args['base_month'] = $args['month'];
      		}
      
      		$base_month_time = strtotime( "{$args['base_year']}-{$args['base_month']}-1" );
      		$base_month      = gmdate( 'Y-n', $base_month_time );
      
      		$last_day = gmdate( 'j', mktime( 0, 0, 0, $args['month'] + 1, 0, $args['year'] ) );
      
      		$week = gmdate( 'w', mktime( 0, 0, 0, $args['month'], 1, $args['year'] ) );
      
      		$week_count = ceil( ( ( ( 7 + $week - $args['start_of_week'] ) % 7 ) + $last_day ) / 7 );
      
      		$day_count = $week_count * 7;
      
      		$start_time = strtotime( "{$args['year']}-{$args['month']}-1" );
      		if ( (int) $args['start_of_week'] !== $week ) {
      			$d          = ( 7 + $week - $args['start_of_week'] ) % 7;
      			$start_time = strtotime( "-{$d} day", $start_time );
      		}
      
      		if ( $args['show_event'] ) {
      			$args['show_event'] = 1;
      		} else {
      			$events = array();
      			$args['show_event'] = 0;
      		}
      
      		$today = date_i18n( 'Y-m-d' );
      
      		$holidays         = explode( ',', (string) $args['holidays_string'] );
      		$holiday_settings = get_option( 'xo_event_calendar_holiday_settings' );
      
      		$month_html = '';
      
      		for ( $week_index = 0; $week_index < $week_count; $week_index++ ) {
      			$month_html .= '<tr><td colspan="7" class="month-week">';
      
      			$month_html .= '<table class="month-dayname">';
      			$month_html .= '<tbody>';
      			$month_html .= '<tr class="dayname">';
      			for ( $day_index = 0; $day_index < 7; $day_index++ ) {
      				$d     = $week_index * 7 + $day_index;
      				$date  = strtotime( "+{$d} days", $start_time );
      				$class = '';
      				if ( gmdate( 'n', $date ) !== $args['month'] ) {
      					$class .= 'other-month ';
      				}
      				if ( gmdate( 'Y-m-d', $date ) === $today ) {
      					$class .= 'today ';
      				}
      				$style = '';
      				if ( $holiday_settings ) {
      					$holiday_slugs = my_get_holiday_slug( $holidays, $holiday_settings, $date );
      					if ( count( $holiday_slugs ) ) {
      						$holiday_slug = end( $holiday_slugs );
      						$style        = 'style="background-color: ' . $holiday_settings[ $holiday_slug ]['color'] . ';"';
      						$class       .= implode(
      							' ',
      							array_map(
      								function( $s ) {
      									return "holiday-{$s}";
      								},
      								$holiday_slugs
      							)
      						);
      					}
      				}
      				if ( ! empty( $class ) ) {
      					$class = 'class="' . trim( $class ) . '" ';
      				}
      				$month_html .= "<td><div {$class}{$style}>" . gmdate( 'j', $date ) . '</div></td>';
      			}
      			$month_html .= '</tr>';
      			$month_html .= '</tbody>';
      			$month_html .= '</table>';
      
      			$month_html .= '<div class="month-dayname-space"></div>';
      
      			if ( count( $events ) > 0 ) {
      				$month_html .= '<table class="month-event">';
      				$month_html .= '<tbody>';
      				$month_html .= '<tr>';
      
      				for ( $day_index = 0; $day_index < 7; $day_index++ ) {
      					$month_html .= '<td>';
      
      					$d   = $week_index * 7 + $day_index;
      					$day = gmdate( 'Y-m-d', strtotime( "+{$d} day", $start_time ) );
      
      					$events_count = count( $events );
      					for ( $i = 0; $i < $events_count; $i++ ) {
      						$event = $events[ $i ];
      						if ( empty( $event['end_date'] ) ) {
      							$event['end_date'] = $event['start_date'];
      						}
      						if ( $event['start_date'] <= $day && $day <= $event['end_date'] ) {
      							$short_title = ( $event['short_title'] ) ? $event['short_title'] : $event['title'];
      							$month_html .= '<a href="' . esc_attr( $event['permalink'] ) . '" title="' . esc_attr( $event['title'] ) . '">';
      							$month_html .= '<span class="month-event-title" style="color: #333; background-color: ' . esc_attr( $event['bg_color'] ) . '">' . esc_html( $short_title ) . '</span>';
      							$month_html .= '</a>';
      						}
      					}
      
      					$month_html .= '</td>';
      				}
      
      				$month_html .= '</tbody>';
      				$month_html .= '</table>';
      			}
      
      			$month_html .= '</td></tr>';
      		}
      
      		$m = strtotime( "{$args['year']}-{$args['month']}-1" );
      
      		$prev_month = gmdate( 'Y-n', strtotime( '-1 month', $m ) );
      		$next_month = gmdate( 'Y-n', strtotime( sprintf( '%d month', 2 - $month_index ), $m ) );
      
      		if ( isset( $xo_event_calendar->options['disable_dashicons'] ) && $xo_event_calendar->options['disable_dashicons'] ) {
      			$prev_text = '<span class="nav-prev">PREV</span>';
      			$next_text = '<span class="nav-next">NEXT</span>';
      		} else {
      			$prev_text = '<span class="dashicons dashicons-arrow-left-alt2"></span>';
      			$next_text = '<span class="dashicons dashicons-arrow-right-alt2"></span>';
      		}
      
      		if ( ! isset( $args['title_format'] ) || empty( $args['title_format'] ) ) {
      			$calendar_caption = sprintf( _x( '%1$s %2$s', 'calendar caption', 'xo-event-calendar' ), $wp_locale->get_month( $args['month'] ), $args['year'] );
      		} else {
      			$t = strtotime( sprintf( '%04d-%02d', $args['year'], $args['month'] ) );
      			if ( ! isset( $args['locale'] ) || $args['locale'] ) {
      				$calendar_caption = date_i18n( $args['title_format'], $t );
      			} else {
      				$calendar_caption = gmdate( $args['title_format'], $t );
      			}
      		}
      
      		$html  = '<div class="calendar xo-month-wrap">';
      		$html .= '<table class="xo-month">';
      		$html .= '<caption>';
      		$html .= '<div class="month-header">';
      		if ( $args['navigation'] ) {
      			if ( -1 === $args['prev_month_feed'] || $m > strtotime( "-{$args['prev_month_feed']} month", $base_month_time ) ) {
      				$onclick = sprintf(
      					"this.disabled = true; xo_event_calendar_month(this,'%s',%d,'%s','%s',%d,%d,%d,%d,%d,'%s',%d,%d,'%s'); return false;",
      					esc_attr( $prev_month ),
      					$args['show_event'],
      					esc_attr( $args['categories_string'] ),
      					esc_attr( $args['holidays_string'] ),
      					$args['prev_month_feed'],
      					$args['next_month_feed'],
      					$args['start_of_week'],
      					$args['months'],
      					$args['navigation'],
      					esc_attr( isset( $args['title_format'] ) ? $args['title_format'] : '' ),
      					isset( $args['locale'] ) ? $args['locale'] : true,
      					isset( $args['columns'] ) ? $args['columns'] : 1,
      					esc_attr( $base_month )
      				);
      
      				$html .= '<button type="button" class="month-prev" onclick="' . $onclick . '">' . $prev_text . '</button>';
      			} else {
      				$html .= '<button type="button" class="month-prev" disabled="disabled">' . $prev_text . '</button>';
      			}
      		}
      		$html .= '<span class="calendar-caption">' . esc_html( $calendar_caption ) . '</span>';
      		if ( $args['navigation'] ) {
      			if ( -1 === $args['next_month_feed'] || $m < strtotime( "+{$args['next_month_feed']} month", $base_month_time ) ) {
      				$onclick = sprintf(
      					"this.disabled = true; xo_event_calendar_month(this,'%s',%d,'%s','%s',%d,%d,%d,%d,%d,'%s',%d,%d,'%s'); return false;",
      					esc_attr( $next_month ),
      					$args['show_event'],
      					esc_attr( $args['categories_string'] ),
      					esc_attr( $args['holidays_string'] ),
      					$args['prev_month_feed'],
      					$args['next_month_feed'],
      					$args['start_of_week'],
      					$args['months'],
      					$args['navigation'],
      					esc_attr( isset( $args['title_format'] ) ? $args['title_format'] : '' ),
      					isset( $args['locale'] ) ? $args['locale'] : true,
      					isset( $args['columns'] ) ? $args['columns'] : 1,
      					esc_attr( $base_month )
      				);
      
      				$html .= '<button type="button" class="month-next" onclick="' . $onclick . '">' . $next_text . '</button>';
      			} else {
      				$html .= '<button type="button" class="month-next" disabled="disabled" >' . $next_text . '</button>';
      			}
      		}
      		$html .= '</div>';
      		$html .= '</caption>';
      
      		$html .= '<thead>';
      		$html .= '<tr>';
      
      		$weeks = array( 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' );
      		for ( $day_index = 0; $day_index < 7; $day_index++ ) {
      			$weekday_number = ( $day_index + $args['start_of_week'] ) % 7;
      			$html .= '<th class="' . esc_attr( strtolower( $weeks[ $weekday_number ] ) ) . '">' . esc_html( $wp_locale->get_weekday_abbrev( $wp_locale->get_weekday( $weekday_number ) ) ) . '</th>';
      		}
      
      		$html .= '</tr>';
      		$html .= '</thead>';
      		$html .= '<tbody>';
      		$html .= $month_html;
      		$html .= '</tbody>';
      		$html .= '</table>';
      		$html .= '</div>' . "\n";
      
      		return $html;
      	}
      
      	add_filter( 'xo_event_calendar_month', 'my_xo_event_calendar_month', 10, 4 );
      }

      CSS:

      .xo-event-calendar table.xo-month .month-event-title {
      	display: inline-block;
      	white-space: normal;
      }
      .xo-event-calendar table.xo-month .month-week {
      	height: 2.5em;
      }
  • 石鷹様

    お忙しいとことご丁寧にご回答いただき、またサポート対象外とはいえコード作成まで行っていただき、誠にありがとうございます。また深夜までお時間をとらせてしまい誠に申し訳ありませんでした。

    早速組み込んでみましたところ、希望通りの表示ができました。
    今後いろいろな環境変化により本コードが利用できなくなるかもしれないことを納得した上で当面利用させていただきたいと思います。

    ありがとうございました。

  • 石鷹様

    度々申し訳ございません。

    状況についてお話しいたしましたが、PCでの表示は希望通りになりましたが、iPhoneで表示させた場合は従来仕様での表示のままでした。
    iPhoneについても希望通りの表示にさせることは可能でしょうか。
    図々しいお願いで誠に申し訳ありませんが、ご指導いただけると助かります。

    以上です。

    • CSS が効いていないのではないでしょうか?
      ブラウザのキャッシュを削除してみてはどうでしょうか?

  • 石鷹様

    iPhoneのブラウザのキャッシュを削除すると問題が解消しました。
    お手数をお掛けし申し訳ありませんでした。

    追加の質問で大変恐縮いたしますが、予定内容に改行を含めた書き込みを行った場合、リスト表示の際に改行が認識されず横一列の表示となってしまいます。
    改行を含めた表示をさせることは可能でしょうか?

    CSS等扱うことのできる方には常識かもしれませんが、当方初心者につき何度もお手数をおかけし申し訳ありませんがご教授いただけるととても助かります。

    以上です。

    • 「リスト表示」とはどこのことでしょうか?
      イベントの一覧(アーカイブ)ページでしたら、テーマ側で変更することになります。テーマ名をお知らせください。

  • 石鷹様
    いい加減な説明で申し訳ありませんでした。
    リスト表示とは、XO Event Calendar イベントリストショートコードを利用しての表示のことです。
    イベントリストを表示する固定ページには[xo_event_list type=”detail”]と記載し、イベント編集ページのイベント内容欄に以下のように記載しています。

    11月25日(土)
    9:00-10:30 第一グループ
    10:30-12:00 第二グループ
    市立体育館

    これが固定ページでは以下のように表示されてしまいます。

    11月25日(土)9:00-10:30 第一グループ 10:30-12:00 第二グループ 市立体育館

    テーマ名はTwenty Seventeenです。

    ご指導いただけると助かります。

    以上です。

    • その部分は抜粋で、改行や HTML タグは削除された文字列となります。
      改行を含むタグをそのまま表示する場合は、コードを変更する必要があります。

      $excerpt = get_the_custom_excerpt( get_the_content(), $atts['excerpt_length'], $atts['more'] );

      $excerpt = get_the_content();
      • 石鷹様

        早速のご指導ありがとうございます。
        おかげさまで希望の表示ができました。
        これまでご丁寧にご対応いただきありがとうございました!末長く利用させていただきたいと思います。

  • 石鷹様
    こんばんは。はじめまして。
    いつもXO Event Calendar、XO Securityなどを使わせていただいております。感謝いたします。

    今まで不具合などなく使わせていただいていたのですが、今制作しているサイトでXO Event Calendarイベント追加画面のイベント詳細の開始日時、終了日時の入力のところ、時間登録は出るのですが、日付表示部分が非表示になり登録出来ない状況です。ブロックエディタからクラシックエディタに変更すると表示されます。
    wordpressは最新版、ほぼ似たようなテーマ、プラグインの環境の他サイトでは問題なく表示されています。色々と試行錯誤しましたがブロックエディタの時には表示される、という所までしか解決出来ずに困っておりました。

    不具合を起こしている可能性があるプラグインやテーマなど何か考えられるものがありますでしょうか?
    教えていただけましたら幸いです。

    使用テーマ astra pro 主なプラグインなど elementor pro、WP Rocket、JetEngine、CSS Hero など
    サイトはまだ非公開でした、

    • はじめまして、こんにちは。
      テーマか他のプラグインの CSS が影響していると思われます。
      まずは、プラグインをひとつずつ無効化、デフォルトテーマに変更して、何が原因になっているかを特定してもらえませんか?

      • 石鷹様
        ありがとうございます。
        プラグイン JetEngine をOFFにすると表示される事がわかりました。
        JetEngineの何かが該当部分を非表示にさせているようですが、JetEngineで重要なカスタム投稿など複数使っておりましたので、諦めようかと思います。
        イベント投稿のカスタムフィールドでは event_start_date event_end_date は表示されますのでどうしてもブロックエディタで編集したい時には、カスタムフィールドを編集する事にします。
        ご返信いただきありがとうございます。
        今後ともよろしくお願いいたします。

  • 間違いがありました。クラシックエディタの時には表示される、でした。

  • 非常に有用なプラグインをありがとうございます!
    1点、問題が発生したのでご報告を兼ねてコメントさせていただきました。

    OS…windows10
    使用ブラウザ…Google Chrome バージョン120
    ワードプレスのバージョン…6.4.2
    プラグインのバージョン…3.2.6

    権限を「編集者」に設定したユーザーを追加したのですが、ウィジェットページのサイドバーにある「休日設定」をクリックすると、ブロックの箇所に「このブロックでエラーが発生したためプレビューできません。」という表示が出てしまい、休日設定ができない上にカレンダーも表示されません。

    デベロッパーツールを見てみると、下記のエラーが表示されているのですが、原因はと対策方法はお分かりになりますでしょうか?

    ※「管理者」権限ではエラーは起きておりません。
    ※新規WPでも試してみましたが、他のプラグインを入れていない状態でも再現できました。
    ※「外観」および「ウィジェット」が表示されるようにfunctions.phpには記述しました。

    ■デベロッパーツール
    —————————————————————-
    対象ファイル:react-dom.min.js?ver=18.2.0:10

    TypeError: Cannot read properties of null (reading ‘filter’)
    at ue (components.min.js?ver=f6e63a4760dcece8b909:48:513384)
    at e (components.min.js?ver=f6e63a4760dcece8b909:48:514868)
    at wt (react-dom.min.js?ver=18.2.0:10:47637)
    at js (react-dom.min.js?ver=18.2.0:10:120584)
    at wl (react-dom.min.js?ver=18.2.0:10:88659)
    at bl (react-dom.min.js?ver=18.2.0:10:88587)
    at yl (react-dom.min.js?ver=18.2.0:10:88450)
    at il (react-dom.min.js?ver=18.2.0:10:85274)
    at fl (react-dom.min.js?ver=18.2.0:10:85661)
    at Nn (react-dom.min.js?ver=18.2.0:10:32474)
    —————————————————————-

    ■functions.php
    —————————————————————-
    # 「外観」を表示
    function add_theme_caps(){
    $role = get_role(‘editor’);
    $role->add_cap(‘edit_theme_options’);
    }
    add_action(‘admin_init’,’add_theme_caps’);

    # ウィジェットを表示
    function my_theme_widgets_init() {
    register_sidebar(array(
    ‘name’ => ‘定休日カレンダー’,
    ‘id’ => ‘calendar’,
    ‘before_widget’ => ”,
    ‘after_widget’ => ”,
    ));
    }
    add_action(‘widgets_init’, ‘my_theme_widgets_init’);
    —————————————————————-

    お忙しいところ恐れ入りますが、よろしくお願い申し上げます。

    • はじめまして、こんにちは。
      詳細な報告をありがとうございます。不具合を確認しました。
      とりあえずエラーにならないように修正したバージョン3.2.9をリリースしました。
      ただし、管理者以外では休日の候補リスト(ドロップダウン)が表示されないので手入力のみとなります。これは将来のバージョンで改善したいと思います。

      • 石鷹様
        早速のご返信とご対応、誠にありがとうございます!
        確認させていただいたところ、エラーが表示されなくなっており感動いたしました。
        本当にありがとうございました。
        今後ともよろしくお願いいたします。

コメントを残す

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

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