「Blog Press」でエラー警告対処。

「Blog Press」でエラー警告対処。

TCDさんのホームページで「Blog Press」がメールアドレス登録で無料配信されていました。

早速ダウンロードし、ローカルでテーマを切り替えてみたところ

Deprecated: Function create_function() is deprecated

と表示されてしまいました。

あららと思いつつ解消をしてみようと思います。

原因

「Deprecated」は非推奨という意味です。

今回の表示の場合だと「create_function()は非推奨ですよ」と促してくれいるわけです。

PHP7.2から非推奨で警告表示されるようになっているようです。

使用箇所は2か所ありました。

「blogpress_tcd10/widget/recommend_post.php on line 86」

「blogpress_tcd10/widget/ad.php on line 40」

それぞれ対策していきます。

対策

「recommend_post.php」の方を見てみます。

add_action('widgets_init', create_function('', 'return register_widget("recommend_widget");'));

確かに「create_function」が利用されていますね。

これを以下のように書き換えてやります。

add_action('widgets_init', function(){ register_widget('recommend_widget');});

cerate_functionを使用しない形ですね。

同様に「ad.php」の方も変更します。

add_action('widgets_init', create_function('', 'return register_widget("ad_widget");'));

という部分を

add_action('widgets_init', function(){ register_widget('ad_widget'); } );

というように変更します。

これでエラーが解消されるはずです。

ところが、次は異なるメッセージのエラーが出てきます。

「Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; recommend_widget has a deprecated constructor」

このようなメッセージです。

「コンストラクタの書き方が将来のバージョンで保証されないよ」

という意味合いです。

なので、再び両方のファイルを編集していきます。

「recommend_post.php」

function recommend_widget() {
  ⇓
function __construct() {

「ad.php」

function ad_widget() {
  ⇓
function __construct() {

以上でエラーが科しようされたかと思います。

ちなみに以下の画像赤枠が上記個所の対応場所です。