WordPressプラグイン「wp-koyomi」を改造してPHP7に対応させてみた。

2019年09月27日 正午の月齢:28.1  月名:二十九日月  潮汐:大潮 月齢:28.1[二十九日月] 潮汐:大潮
3週間前に投稿 | WordPress | コメントはありません

4分ぐらいで読めます。

「wp-koyomi」旧暦六曜24節気を表示させるプラグイン。以前、PHPのバージョンアップのときに動作しなくなってアンインストールしたのですが、やっぱり寂しくなってムリヤリ使ってみることにしました。

13年近く更新されていないプラグインなので、安全かどうかはわからないのですが、あまりコアに深く刺さるようなプラグインではないので自己責任で使います。

さて、まずはPHPコードの構文チェックを行いました。使ったのはこのサイト。

ここに現行プラグインのソースをぺたっと貼り付けて、どこで引っかかるのかを調べます。

まずはwp-koyomi.phpから。phpバージョンを7.2.6にしてチェック。すると、

Parse error: syntax error, unexpected 'new' (T_NEW) in CODE on line 67
Errors parsing CODE

と出ました。

if (class_exists('WpKoyomi') && class_exists('Qreki')) {
$WpKoyomi = & new WpKoyomi();
$Qreki = & new Qreki();
}

の部分です。

次にqreki.phpを。

No syntax errors detected in CODE

こちらは問題ないみたい。

調べると、PHP7から「参照渡し」というのが廃止になったとか…あまりよくわかってないですけど。

if (class_exists('WpKoyomi') && class_exists('Qreki')) {
$WpKoyomi = & new WpKoyomi();
$Qreki = & new Qreki();
}

if (class_exists('WpKoyomi') && class_exists('Qreki')) {
$WpKoyomi = new WpKoyomi();
$Qreki = new Qreki();
}

という感じに「&」を取ったらいいようです。

さっそく修正して、index.phpに埋め込んでみると、無事、旧暦や六曜が表示されるようになりましたー。

これで動作はするのですが、PHP Compatibility CheckerでスキャンオプションのPHPのバージョンをPHP7.3として確認すると警告が表示されました。せっかくの機会なのでこの部分もPHP7対応しましょう。

wp-koyomi.phpの83行目

function WpKoyomi() {

function __construct() {

とします。

qreki.phpの25行目

function Qreki() {

function __construct() {

とします。

つまり

PHP 4 形式のコンストラクタ (クラス名と同じ名前のメソッドを定義するもの) が非推奨となりました。将来的に削除される見込みです。 PHP 7 では、クラス内でこの形式のコンストラクタしか定義されていない場合に E_DEPRECATED が発生します。construct() メソッドを実装していれば、この警告は発生しません。

ということが理由でした。

余談ですが、index.php以外のアーカイブページや個別記事のページにはどうやっても反映してくれません。日付取得あたりをいじったらイケるのかもしれないけど、自信ないなぁ。

古い記事・新しい記事

古い記事
新しい記事

コメントはありません »

[RSS on this post] [TrackBack URI]

コメントをどうぞ

Translate »