【WordPress】自動的に今日の日付を表示させる

wordpress

状況

HOMEや固定ページで、自動的日付を変えたい。

function.php

FTPソフトを使い、function.phpに追加する。今回はWinSCPを使用。

function.phpのパスは、「/wp-content/themes/自分の使用しているテーマ/function.php」となっている。普段使用しているエディタで編集する。

function.phpに関数を追加することで機能を追加することができる。FTPソフトを使用しているのであれば、事前にローカルにコピーしておいた方が良い。追加したけど動かないという場合にはバックアップしておいたファイルを戻してやれば良い。

コード

function shortcode_today() {
    return date_i18n("Y/n/j");
}
add_shortcode('today_date', 'shortcode_today');

phpで書く。date_i18n()はwpで用意されている関数。年月日としたい場合にはdate_i18n(“Y年/n月/j日")と変更する。date_i18n()は/wp-includes/function.phpにある。Unixタイムスタンプの経過時間によって示されている。

function date_i18n( $format, $timestamp_with_offset = false, $gmt = false ) {
	$timestamp = $timestamp_with_offset;
	if ( ! is_numeric( $timestamp ) ) {
		$timestamp = current_time( 'timestamp', $gmt );
	}
	if ( 'U' === $format ) {
		$date = $timestamp;
	} elseif ( $gmt && false === $timestamp_with_offset ) { // Current time in UTC.
		$date = wp_date( $format, null, new DateTimeZone( 'UTC' ) );
	} elseif ( false === $timestamp_with_offset ) { // Current time in site's timezone.
		$date = wp_date( $format );
	} else {
		$local_time = gmdate( 'Y-m-d H:i:s', $timestamp );
		$timezone   = wp_timezone();
		$datetime   = date_create( $local_time, $timezone );
		$date       = wp_date( $format, $datetime->getTimestamp(), $timezone );
	}
	$date = apply_filters( 'date_i18n', $date, $format, $timestamp, $gmt );

	return $date;
}

関数作って、add_shortcode('today_date’, 'shortcode_today’);みたいに、add_shortcode('本文で使いたいショートコード名’, 'さっき作った関数名’);で書いてやれば良い。調べると、以下のような感じでadd_filter()でフィルター設定して発火したときに関数を実行させてやるというコードもあったが、ウィジェットでもテキスト内にショートコード書いてやれば使えたので、一旦は最初に書いたコードだけで足りる。カスタマイズとどこまでやりたいかにもよるので、その都度変更していけば良い。

// add_filter('the_content', 'do_shortcode');
// add_filter('get_the_content', 'do_shortcode');
// add_filter('widget_text', 'do_shortcode');

慣れないうちはアナログになりがちだけど、できることから始めていきたい。

以上

参照

関数リファレンス/date i18n
関数リファレンス/add filter
関数リファレンス/add shortcode
関数リファレンス/do shortcode