【WordPress】PHPで日付の省略を考えたけど無理だったので、フォーマットを追加

【WordPress】PHPで日付の省略を考えたけど無理だったので、フォーマットを追加



カスタムフィールドで、「2019年11月23日」「2019年11月30日」「2019年12月7日」「2020年1月4日」を連続して表示する際に、

2019年11月23日、2019年11月30日、2019年12月7日、2020年1月4日

とそのまま表示するのではなくて、

2019年11月23日、11月30日、12月7日、2020年1月4日

と、共通項である「」を省略して表示したいと考えました。

これが単純に日付のフォーマットが固定値であれば何とか策も立てられるのですが、WordPressの「設定⇒一般」で規定している日付のフォーマットを利用する場合は、サイト運営者によって異なる値となるので、これを想定して設計するのは不可能でした。

であれば、いっそのこと、省略時の日付のフォーマットを新しく「設定⇒一般」に追加して、これを利用すれば良いと考えました。

設定⇒一般」に追加するには、functions.php

function add_option_field() {
  add_settings_field(
		'date_omission_format',
		'日付のフォーマット(省略時)',
		'set_option_field',
		'general'
	);
  register_setting( 'general', 'date_omission_format' );
}
add_filter( 'admin_init', 'add_option_field' );

function set_option_field() {
  $option = get_option( 'date_omission_format' );
  echo '<input name="date_omission_format" id="date_omission_format" type="text" value="' . esc_html( $option ) . '" class="small-text" />';
}

とします。
これで「設定⇒一般」の一番下に日付のフォーマット(省略時)の入力フォームが追加されます。

WordPress:管理画面の各設定画面内に項目を追加する方法 | NxWorld
参考
WordPress:管理画面の各設定画面内に項目を追加する方法 | NxWorld

WordPressの管理画面にある「一般」「投稿設定」「表示設定」といった各設定画面内に項目を追加する方法です。

WordPress:管理画面の各設定画面内に項目を追加する方法 | NxWorld NxWorld

これで、日付の省略フォーマットを取得することが出来ます。

get_option( 'date_omission_format' );

使用例)

$date_format     = get_option( 'date_format' ); // Y年n月j日
$omission_format = get_option( 'date_omission_format' ); // n月j日
$date_array      = array( '2019/11/23', '2019/11/30', '2019/12/7', '2020/1/4' );
$label           = '';
$year            = '';
foreach ( $date_array as $date ) {
	if ( $year === date_i18n( 'Y', strtotime( $date ) ) ) {
		$label .= date_i18n( $omission_format, strtotime( $date ) ) . '、';
	} else {
		$label .= date_i18n( $date_format, strtotime( $date ) ) . '、';
	}
	$year = date_i18n( 'Y', strtotime( $date ) );
}
echo rtrim( $label, '、' ); // 2019年11月23日、11月30日、12月7日、2020年1月4日
今日はここまで

関連する記事



こちらはいかが?


コメントを残す