<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>フィルターフック &#8211; WordPress Memo</title>
	<atom:link href="https://blog.riverforest-wp.info/tag/%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%83%95%E3%83%83%E3%82%AF/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.riverforest-wp.info</link>
	<description>WordPress に関する覚え書き</description>
	<lastBuildDate>Fri, 09 May 2025 12:48:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.riverforest-wp.info/wp-content/uploads/2018/05/cropped-icon-256x256-1-32x32.png</url>
	<title>フィルターフック &#8211; WordPress Memo</title>
	<link>https://blog.riverforest-wp.info</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress 5.3 で導入される日時の関数とフィルター</title>
		<link>https://blog.riverforest-wp.info/wp5-3-datetime-function-filter/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Wed, 25 Sep 2019 15:17:37 +0000</pubDate>
				<category><![CDATA[Filter]]></category>
		<category><![CDATA[data_i18n]]></category>
		<category><![CDATA[フィルターフック]]></category>
		<category><![CDATA[日時]]></category>
		<category><![CDATA[関数]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=1663</guid>

					<description><![CDATA[はじめに WordPress 5.3 は１１月にリリース予定ですが、以下の様な記事を見つけました。 新しい日時の関数とフィルターが導入されるという事で、日時の関数とフィルターを多数使用している自分のプラグイン Warek [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p><strong>WordPress 5.3</strong> は１１月にリリース予定ですが、以下の様な記事を見つけました。</p>



<figure class="wp-block-embed is-type-rich is-provider-wp-oembed-blog-card wp-block-embed-wp-oembed-blog-card"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="8aYw9W3vQE"><a href="https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/">Date/Time component improvements in WordPress 5.3</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Date/Time component improvements in WordPress 5.3&#8221; &#8212; Make WordPress Core" src="https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/embed/#?secret=JOD72wi6JV#?secret=8aYw9W3vQE" data-secret="8aYw9W3vQE" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p>新しい日時の関数とフィルターが導入されるという事で、日時の関数とフィルターを多数使用している自分のプラグイン <strong>Wareki</strong> をベータ版でテストした所、動作しない箇所があったので修正しました。その際に、いろいろテストしたので一部の関数とフィルターを以下に紹介します。</p>



<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/wareki/assets/icon-256x256.png?rev=2061943" alt="Wareki のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/wareki/" class="pluginstatsview-astyle">Wareki</a></div>
			<div class="pluginstatsview-small">日付のフォーマット、投稿、コメント、アーカイブ、カレンダーに元号を含む日本の暦を追加します。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/wareki/#reviews" title="5.0(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span>
			</span>
	</a>(3)</span>
		<span class="pluginstatsview-card-right">最終更新: 2日 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">200以上サイトで有効化中</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/wareki.2.03.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2019-04-02</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-03-31 09:30 時点の統計	</div>
</div>



<h3 class="wp-block-heading">関数</h3>



<pre class="prism line-numbers"><code class="language-php language-html">wp_date( $format, $timestamp = null, $timezone = null )</code></pre>



<p> <strong>date_i18n</strong> 関数の後継だと思います。 </p>



<ul class="wp-block-list">
<li>第１引数 PHP の日時のフォーマット</li>



<li>第２引数 Unix タイムスタンプ</li>



<li>第３引数 タイムゾーン</li>



<li>返り値 書式化された日時の文字列もしくは False</li>
</ul>



<p>第３引数がポイントでデフォルトではサイトで設定したタイムゾーンが入ってきます。使い方は以下の様に書きます。現在の日時を出すだけなら、第２引数・第３引数は省略します。</p>



<pre class="prism line-numbers"><code class="language-php language-html">$date_ux = 1569422086;
$date = wp_date( 'Y-m-d H:i:s', $date_ux, new DateTimeZone( 'UTC' ) );</code></pre>



<p>
以前 <strong>data_i18n</strong> 関数では、前後のコード次第で９時間ずれたりして苦労した事があったのですが、この関数ではそのような事はなくなりました。

</p>



<figure class="wp-block-embed is-type-rich is-provider-wp-oembed-blog-card"><div class="wp-block-embed__wrapper">
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/date_i18n
</div></figure>



<hr class="wp-block-separator has-css-opacity"/>



<pre class="prism line-numbers"><code class="language-php language-html">current_datetime()</code></pre>



<p>以下の様な日時のオブジェクトを返します。</p>



<pre class="prism line-numbers"><code class="language-php language-html">DateTimeImmutable Object ( &#91;date] =&gt; 2019-09-25 23:34:46.584458 &#91;timezone_type] =&gt; 3 &#91;timezone] =&gt; Asia/Tokyo ) </code></pre>



<h3 class="wp-block-heading">フィルター</h3>



<pre class="prism line-numbers"><code class="language-php language-html">apply_filters( 'wp_date', $date, $format, $timestamp, $timezone )</code></pre>



<ul class="wp-block-list">
<li>第１引数 書式化された日時の文字列</li>



<li>第２引数 PHP の日時のフォーマット</li>



<li>第３引数 Unix タイムスタンプ</li>



<li>第４引数 タイムゾーン返り値 日時の文字列もしくは False </li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>data_i18nフィルターとdate_formatsフィルターを使用して新しい日付のフォーマットを作成</title>
		<link>https://blog.riverforest-wp.info/data-i18n-date-formats-filter/</link>
		
		<dc:creator><![CDATA[Katsushi Kawamori]]></dc:creator>
		<pubDate>Wed, 10 Apr 2019 10:44:00 +0000</pubDate>
				<category><![CDATA[Filter]]></category>
		<category><![CDATA[data_i18n]]></category>
		<category><![CDATA[date_formats]]></category>
		<category><![CDATA[フィルターフック]]></category>
		<category><![CDATA[日付のフォーマット]]></category>
		<guid isPermaLink="false">https://blog.riverforest-wp.info/?p=1139</guid>

					<description><![CDATA[はじめに 新元号が「令和」に決まりました。「令和」がとても気に入ってしまったのと、ちょうど桜の花が綺麗で気分が高揚した勢いで「Wareki」という日付を和暦にするプラグインを作成してしまいました。 初めは、get_the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">はじめに</h3>



<p>新元号が「<strong>令和</strong>」に決まりました。「<strong>令和</strong>」がとても気に入ってしまったのと、ちょうど桜の花が綺麗で気分が高揚した勢いで「<strong>Wareki</strong>」という日付を和暦にするプラグインを作成してしまいました。</p>



<div class="pluginstatsview-card-wrap">
	<div>
		<img decoding="async" src="https://ps.w.org/wareki/assets/icon-256x256.png?rev=2061943" alt="Wareki のアイコン" class="pluginstatsview-card-icon" />
		<div class="pluginstatsview-after-icon">
			<div class="pluginstatsview-bold"><a href="https://wordpress.org/plugins/wareki/" class="pluginstatsview-astyle">Wareki</a></div>
			<div class="pluginstatsview-small">日付のフォーマット、投稿、コメント、アーカイブ、カレンダーに元号を含む日本の暦を追加します。</div>
			<div class="pluginstatsview-small">作者: <a href="https://profiles.wordpress.org/katsushi-kawamori/">Katsushi Kawamori</a></div>
			<div style="clear: both;"></div>
		</div>
	</div>
	<div style="clear: both;"></div>

	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left"><a href="https://wordpress.org/plugins/wareki/#reviews" title="5.0(5点満点中)" class="pluginstatsview-astyle">	<span class="pluginstatsview-stars">
					<span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span>
			</span>
	</a>(3)</span>
		<span class="pluginstatsview-card-right">最終更新: 2日 前</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">200以上サイトで有効化中</span>
		<span class="pluginstatsview-card-right">検証済み: 7.0</span>
	</div>
	<div class="pluginstatsview-small">
		<span class="pluginstatsview-card-left">ダウンロード: <a href="https://downloads.wordpress.org/plugin/wareki.2.03.zip" class="dashicons dashicons-download pluginstatsview-download"></a></span>
		<span class="pluginstatsview-card-right">リリース: 2019-04-02</span>
	</div>
	<div class="pluginstatsview-small pluginstatsview-card-center">
		2026-03-31 09:30 時点の統計	</div>
</div>



<p>初めは、<strong>get_the_date</strong>、<strong>get_the_modified_date</strong>、<strong>get_the_comment_date</strong>、フィルターを利用して、日付を書き換えていたのですが、テーマによっては、これらのフィルターが使えずに、 <strong>get_the_time</strong>、<strong>get_the_modified_time</strong>、フィルターを利用する事になりました。フィルターが多くなり過ぎて、面倒になり、<strong>設定-&gt;一般-&gt;日付のフォーマット</strong>に和暦のフォーマットを追加する事を思いつきました。<strong>functions.php</strong> の <strong>date_i18n</strong>関数 を見たらフィルターを提供しているようなので使用してみました。</p>



<h3 class="wp-block-heading">コード</h3>



<pre class="prism line-numbers"><code class="language-php language-html">/* ==================================================
 * Construct
 * @since	1.00
 */
public function __construct() {

	// 日付のフォーマット
	add_filter( 'date_formats', array( $this, 'wareki_date_formats' ), 10, 1 );
	// 時刻フォーマット
	add_filter( 'time_formats', array( $this, 'wareki_time_formats' ), 10, 1 );
	// date_i18n フィルター
	add_filter( 'date_i18n', array( $this, 'wareki_date_i18n' ), 10, 4 );

}

/* ==================================================
 * Date Format Hook
 * @param	array	$date_array
 * @since	1.10
 */
public function wareki_date_formats( $date_array ) {

	// 元号を K とし、元号の略号を k とする
	$add_array = array( "K年n月j日", "k年n月j日" );

 	return array_merge($date_array, $add_array);

}

/* ==================================================
 * Time Format Hook
 * @param	array	$time_array
 * @since	1.10
 */
public function wareki_time_formats( $time_array ) {

	// 午前午後を E とする
	$add_array = array( "Eg時i分" );

 	return array_merge($time_array, $add_array);

}

/* ==================================================
 * Wareki date_i18n Hook
 * @param	string	$j
 * @param	string	$req_format
 * @param	int	$i
 * @param	bool	$gmt
 * @return	string	$j
 * @since	1.10
 */
public function wareki_date_i18n( $j, $req_format, $i, $gmt ) {

	// それぞれのフォーマット文字が見つかったら、
	// タイムスタンプ $i、文字 $j などを関数に送り、
	// 変更した文字を返す。
	if ( strpos($req_format, 'K') !== false ) {
		$j = $this-&gt;gengo_date_i18n( $i, $j, 'K' );
	}

	if ( strpos($req_format, 'k') !== false ) {
		$j = $this-&gt;gengo_date_i18n( $i, $j, 'k' );
	}

	if ( strpos($req_format, 'E') !== false ) {
		$j = $this-&gt;ampm_date_i18n( $i, $j);
	}

	return $j;

}

/* ==================================================
 * Gengo date_i18n
 * @param	int	$timestamp
 * @param	string	$j
 * @param	string	$k
 * @return	string	$j
 * @since	1.10
 */
private function gengo_date_i18n( $timestamp, $j, $k ) {

	// タイムスタンプを受け取り判断
	// とりあえず令和と平成のみ

	$reiwa = 1556636400;
	$year = intval(date_i18n('Y', $timestamp));

	if ( $reiwa &lt;= $timestamp ) {
		$y = $year - 2019 + 1;
		if ( $y == 1 ) $y = "元";
		if ( $k == 'K' ) {
			$gengo = "令和";
		} else if ( $k == 'k' ) {
			$gengo = "R";
		}
		$j = str_replace($k, $gengo.$y, $j);
	} else {
		$y = $year - 1989 + 1;
		if ( $y == 1 ) $y = "元";
		if ( $k == 'K' ) {
			$gengo = "平成";
		} else if ( $k == 'k' ) {
			$gengo = "H";
		}
		$j = str_replace($k, $gengo.$y, $j);
	}

	return $j;

}

/* ==================================================
 * AM PM date_i18n
 * @param	int	$timestamp
 * @param	string	$j
 * @return	string	$j
 * @since	1.10
 */
private function ampm_date_i18n( $timestamp, $j) {

	// タイムスタンプを受け取り判断
	// 午前か午後を返す

	$ampm = date_i18n('a', $timestamp);
	if ( $ampm == 'am') {
		$e = "午前";
	} else {
		$e = "午後";
	}

	$j = str_replace("E", $e, $j);

	return $j;

}</code></pre>



<h3 class="wp-block-heading">各種画面</h3>



<p class="has-text-align-center"><strong>設定</strong></p>



<figure class="wp-block-image aligncenter"><img fetchpriority="high" loading="eager" decoding="async" width="1024" height="604" src="https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-1-1024x604.png" alt="" class="wp-image-1147" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-1-1024x604.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-1-300x177.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-1-768x453.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-1-100x59.png 100w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-1.png 1360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="has-text-align-center"><strong>投稿</strong></p>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="1024" height="608" src="https://blog.riverforest-wp.info/wp-content/uploads/20190403/screenshot-2-1024x608.png" alt="" class="wp-image-1092" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20190403/screenshot-2-1024x608.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20190403/screenshot-2-300x178.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20190403/screenshot-2-768x456.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20190403/screenshot-2-100x59.png 100w, https://blog.riverforest-wp.info/wp-content/uploads/20190403/screenshot-2.png 1261w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="has-text-align-center"><strong>プラグイン（</strong><a href="https://ja.wordpress.org/plugins/legacy-google-calendar-events/"><strong>Legacy Google Calendar Events 2.4</strong></a><strong> ）のイベント画面</strong></p>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="1024" height="546" src="https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-2-1024x546.png" alt="" class="wp-image-1148" srcset="https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-2-1024x546.png 1024w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-2-300x160.png 300w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-2-768x409.png 768w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-2-100x53.png 100w, https://blog.riverforest-wp.info/wp-content/uploads/20190410/screenshot-2.png 1663w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">おわりに</h3>



<p><strong>get_the_date</strong>、<strong>get_the_modified_date</strong>、<strong>get_the_comment_date</strong>、<strong>get_the_time</strong>、<strong>get_the_modified_time</strong> フィルターが不要になりました。</p>



<p>なお、年別、月別、日別、アーカイブとウィジェットにはこの方法は使用できません。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
