WordPressで年齢を自動的に計算して表示する方法を紹介します。
生年月日を指定してショートコードを呼び出したら、その日の年齢を表示します。
記事投稿から何年経っても、そのページを開いた日の年齢が自動的に算出されるので、一度セットすれば修正の必要がなく便利です。
※ WordPressテーマの修正に関する注意
WordPressのテーマを修正する際は、必ずバックアップを取り、テスト環境で十分に確認してから、本番環境に反映させてください。
functions.phpに追加するコード
//年齢を自動的に計算するショートコード
function get_age_func($day) {
extract(shortcode_atts(array('day' => 'day'), $day));
return (int) ((date_i18n('Ymd')-$day)/10000);
}
add_shortcode('birth', 'get_age_func');
コピーしました
ショートコードの呼び出し方
ショートコードの引数に生年月日を指定します。
私は[birth day="19900101"]歳です。
上記の実行結果はこのようになります。
私は34歳です。
Special Thanks
下記2サイトを参考にさせていただきました。
WordPressで年齢を生年月日から自動計算して表示する方法 | アフィカツ|共働きイクメンパパのブログで脱サラ物語
WordPressで日時を扱うときはdate_i18nを使うべし – date関数の罠 – | コワーキングスペース7F
ありがとうございました。
ショートコードコピペしましたがエラーが出ましたのでご報告します。
参考にされたアフィカツさんの記事のコードは問題なかったです。
ご指摘をありがとうございました!
wordpress5.3では、date_i18n()関数が非推奨になったんですね。
date()関数だとタイムゾーンによって時間がずれる問題は、date_i18n()関数に代わって wp_date()関数で回避できるようです。
現状date_i18n()も更新されているようですが、処理速度もwp_date()の方が早いようなのでこちらに移行していきます。
ありがとうございました。