CakePHPの日時ライブラリ “Chronos” をWordPressで使う

WordPressで日付や時刻を扱う際には date_i18n() という便利な関数があります。基本的な機能は date() と同じですが、タイムゾーンに関する処理をWordPressに任せることができます。ただし、この関数が扱うのは、あくまで最終的な「日時の出力」に関する部分です。

たとえば「1ヶ月前の今日は何曜日か?」「今日から2週間前までの記事にNEWマークをつけたい」といった「日時の計算」が求められる場面では、PHPデフォルトの関数やDateTimeオブジェクトなどを利用する必要があります。これらはコードがやや冗長になり、読みづらいのが難点です。

そこで便利なのが、日時を扱うCakePHPのライブラリ Chronos です。

日時を扱うPHPライブラリといえば、かつては Carbon を使うのが主流でした(今でもLaravelはCarbonを利用していますね)。Chronos の利点はオブジェクトがイミュータブルであることです。オブジェクトが変更可能ではないため、バグが発生しづらくなり、コードもよりシンプルに書くことができます。CakePHP3.2から導入された最先端とも言えるこのライブラリを、WordPressでも便利に使ってみましょう。

今回の記事の目的は「カスタム投稿タイプ news の記事を取得し、2週間以内の記事にはNEWマークをつける」とします。まず初めに、WordPressのテーマディレクトリに移動し、ComposerでChronosをインストールしてください。

テーマディレクトリに vendor ディレクトリが生成されました。このパスを front-page.php に記述します。トップページに新着記事が表示されるようにしてみましょう。

今回の記事ではChronosの利点はまだまだ引き出せていないのですが、PHPデフォルトのDateTimeに比べれば、コードの読み書きが随分と楽になったことと思います。私も今までは strtotime() や date_diff() などを利用していましたが、今後の開発では全面的にChronosを取り入れていきたいと考えています。

株式会社トンボロは「WordPress専門」のウェブ制作会社です。

WordPressサイトの制作や、カスタマイズを承ります。
お見積りは無料です。お気軽にお問い合わせください。