[WordPress] サイドバーに経過日数を表示する

WordPress で指定日からの経過日数を表示したくなった。そういうことができるプラグインがパッと見つからなかったので、プラグインを使わない方法に挑戦してみた。

それはウィジェット上で PHP コードを使えば実現できる。

(1)DateCounter.php という以下のようなファイルを作成する。

1<?php
2//指定日
3$date="2019/04/01";
4date_default_timezone_set("Asia/Tokyo");
5//日数表示
6echo '今日は 2019/4/1 から数えて ';
7echo ceil((time() - strtotime($date))/(24*60*60));
8echo ' 日目です。';

(2)現在のテーマの functions.php に以下を追記する( <?php 〜 ?> の間に追記する)。

 1{
 2add_filter( 'widget_text', function( $ret ) {
 3	$php_file = 'DateCounter';
 4
 5	if( strpos( $ret, '[' . $php_file . ']' ) !== false ) {
 6		add_shortcode( $php_file, function() use ( $php_file ) {
 7			get_template_part( $php_file );
 8		});
 9
10		ob_start();
11		do_shortcode( '[' . $php_file . ']' );
12		$ret = ob_get_clean();
13	}
14
15	return $ret;
16}, 99 );
17}

(3)1と2のファイルを /wp-content/themes/[現在のテーマ] へアップロードする。

(4)「テキスト」ウィジェットを追加し、[DateCounter] というショートコードを入力、保存。

これでサイトバーに経過日数が表示されるようになった。

参考:
経過日数を表示する方法
https://imakat.com/2016/08/17/3549/

WordPress でプラグイン使わずにウィジェットで PHP コード動かす | Thought is free
https://thk.kanzae.net/net/wordpress/t6358/

ウィジェットでphpを呼び出したい!ショートコードを設定してphpを読み込ませる方法! | 知りたいねっと
https://shiritai.net/widget-shortcode/