SWELLのお知らせバーの内容を一定期間or時間帯によって変更するカスタマイズ

日本のWordPressテーマSWELLのカスタマイズです。

時間によって通知欄の内容を変化させたり、一定期間内に入るばあいに特定の通知を出すというカスタマイズも可能です。

まずは、お知らせ欄をカスタマイザーから設定できますが、それを時間帯によって内容を変える場合のカスタマイズです。

1.時間帯によって通知内容を変えるカスタマイズ

以下をコピペで動きます。

add_filter( 'swell_infobar_data', function( $info_data ) {

	$hour = (int) current_time( 'H' ); // 現在時刻(サイトのタイムゾーンに依存)

	if ( $hour >= 5 && $hour < 12 ) {
		$info_data['text'] = 'おはようございます。';
	} elseif ( $hour >= 12 && $hour < 18 ) {
		$info_data['text'] = 'こんにちは。';
	} else {
		$info_data['text'] = 'こんばんは!早く寝てね。';
	}

	return $info_data;
});

theme_mod_{$name}が効かなかったのですが、原因を調べてみると、

SWELLでは get_theme_mod() を使っていないのでした。

SWELLテーマでは、以下のような独自のラッパー関数を通じて設定値を取得しています:

SWELL_Theme::get_setting( 'info_text' );

解決策としては、代わりに swell_get_settingswell_infobar_data を使うことでした。

SWELL側が用意している独自のフィルターを使えば、確実に処理を差し込めます

  • swell_get_setting(全設定値共通のフィルター)
  • swell_infobar_data(インフォバー専用のフィルター)

2.一定期間内だけ通知バーの文字を変更するカスタマイズ

以下は、例でゴールデンウィーク(5月1日~5月7日)だけ通知バーの文言を「ゴールデンウィークセール中!」に変更するカスタマイズコードです。

add_filter( 'swell_infobar_data', function( $info_data ) {

	// サイトのタイムゾーンに基づいた現在の日付(フォーマット:YYYY-MM-DD)
	$current_date = current_time( 'Y-m-d' );

	// ゴールデンウィークの期間
	$start = '2025-05-01';
	$end   = '2025-05-07';

	// 指定期間内であれば文言を変更
	if ( $current_date >= $start && $current_date <= $end ) {
		$info_data['text'] = 'ゴールデンウィークセール中!';
	}

	return $info_data;
});

既存の通知URLやボタンテキストはそのまま残されます。

通知のスタイルはSWELLの管理画面で引き続き設定可能です。

以上です!

高速・安心のWebサイト運営なら
Hostingerで決まり!

WordPressも秒速でインストール。高性能・低価格で、個人からビジネスまで幅広く対応します。

公式サイトを見る

Author