From a0ce4d6e19891c0bb0151766a82958ff47b1eead Mon Sep 17 00:00:00 2001 From: mt8 Date: Mon, 27 Apr 2026 21:08:35 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A5=E4=BB=98=E3=83=90=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=83=87=E3=82=A3=E3=83=B3=E3=82=B0=E3=81=8C=20locale?= =?UTF-8?q?=20=E3=81=A7=E6=9B=9C=E6=97=A5/=E6=9C=88=E5=90=8D=E3=82=92?= =?UTF-8?q?=E7=BF=BB=E8=A8=B3=E3=81=99=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wp_date() / get_the_date() が D / M / l / F format を site locale に 翻訳するため、{{feed.last_build_date:r}} の出力が ja で "月, 27 4月 2026 ..." になっていた。RFC 2822 / RFC 3339 は曜日/月名が 英語固定なので、PHP の date() 同等の挙動が必要。 DateTimeImmutable::format() でサイトタイムゾーンに変換しつつ常に英語名 を出す Feedwright\Bindings\DateFormatter を追加し、FeedProvider / NowProvider / PostProvider / PostRawProvider の wp_date 呼び出しを 全てこちらに差し替えた。 実機確認 (locale=ja): - {{now:r}} → Mon, 27 Apr 2026 21:08:20 +0900 ✓ - {{feed.last_build_date:r}} → Mon, 27 Apr 2026 21:08:20 +0900 ✓ Co-Authored-By: Claude Opus 4.7 (1M context) --- src/Bindings/DateFormatter.php | 44 ++++++++++++++++++++++ src/Bindings/Providers/FeedProvider.php | 3 +- src/Bindings/Providers/NowProvider.php | 3 +- src/Bindings/Providers/PostProvider.php | 11 +++++- src/Bindings/Providers/PostRawProvider.php | 3 +- 5 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 src/Bindings/DateFormatter.php diff --git a/src/Bindings/DateFormatter.php b/src/Bindings/DateFormatter.php new file mode 100644 index 0000000..f39e208 --- /dev/null +++ b/src/Bindings/DateFormatter.php @@ -0,0 +1,44 @@ +setTimezone( $timezone ); + return $dt->format( $format ); + } +} diff --git a/src/Bindings/Providers/FeedProvider.php b/src/Bindings/Providers/FeedProvider.php index fe9ce8a..f5e17e4 100644 --- a/src/Bindings/Providers/FeedProvider.php +++ b/src/Bindings/Providers/FeedProvider.php @@ -11,6 +11,7 @@ use Feedwright\Renderer\Context; use Feedwright\Routing\FeedEndpoint; +use Feedwright\Bindings\DateFormatter; use Feedwright\Bindings\ProviderInterface; defined( 'ABSPATH' ) || exit; @@ -86,7 +87,7 @@ private function compute_last_build_date( \WP_Post $feed_post ): int { */ private function format_date( int $timestamp, string $modifier ): string { $format = '' === $modifier ? 'r' : $modifier; - return (string) wp_date( $format, $timestamp ); + return DateFormatter::format( $timestamp, $format ); } /** diff --git a/src/Bindings/Providers/NowProvider.php b/src/Bindings/Providers/NowProvider.php index 875657e..97d6049 100644 --- a/src/Bindings/Providers/NowProvider.php +++ b/src/Bindings/Providers/NowProvider.php @@ -10,6 +10,7 @@ namespace Feedwright\Bindings\Providers; use Feedwright\Renderer\Context; +use Feedwright\Bindings\DateFormatter; use Feedwright\Bindings\ProviderInterface; defined( 'ABSPATH' ) || exit; @@ -41,7 +42,7 @@ public function resolve( string $path, string $modifier, Context $ctx ): ?string return null; } $format = '' === $modifier ? 'c' : $modifier; - return (string) wp_date( $format ); + return DateFormatter::format( time(), $format ); } /** diff --git a/src/Bindings/Providers/PostProvider.php b/src/Bindings/Providers/PostProvider.php index 30cc2b9..7fc5727 100644 --- a/src/Bindings/Providers/PostProvider.php +++ b/src/Bindings/Providers/PostProvider.php @@ -10,6 +10,7 @@ namespace Feedwright\Bindings\Providers; use Feedwright\Renderer\Context; +use Feedwright\Bindings\DateFormatter; use Feedwright\Bindings\ProviderInterface; defined( 'ABSPATH' ) || exit; @@ -50,9 +51,15 @@ public function resolve( string $path, string $modifier, Context $ctx ): ?string case 'post_excerpt': return (string) get_the_excerpt( $post ); case 'post_date': - return (string) get_the_date( '' === $modifier ? 'c' : $modifier, $post ); + return DateFormatter::format( + (int) get_post_time( 'U', true, $post ), + '' === $modifier ? 'c' : $modifier + ); case 'post_modified': - return (string) get_the_modified_date( '' === $modifier ? 'c' : $modifier, $post ); + return DateFormatter::format( + (int) get_post_modified_time( 'U', true, $post ), + '' === $modifier ? 'c' : $modifier + ); case 'post_status': return (string) get_post_status( $post ); case 'post_name': diff --git a/src/Bindings/Providers/PostRawProvider.php b/src/Bindings/Providers/PostRawProvider.php index 0164e6b..b1bb646 100644 --- a/src/Bindings/Providers/PostRawProvider.php +++ b/src/Bindings/Providers/PostRawProvider.php @@ -10,6 +10,7 @@ namespace Feedwright\Bindings\Providers; use Feedwright\Renderer\Context; +use Feedwright\Bindings\DateFormatter; use Feedwright\Bindings\ProviderInterface; defined( 'ABSPATH' ) || exit; @@ -79,7 +80,7 @@ public function resolve( string $path, string $modifier, Context $ctx ): ?string if ( false === $date_time ) { return $raw; } - return (string) wp_date( $modifier, $date_time->getTimestamp(), $timezone ); + return DateFormatter::format( $date_time->getTimestamp(), $modifier, $timezone ); } return null;