WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっ
-
wordpressのサイトをテストから本番に移すと、
「WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっています! 」
というNoticeが出てきました。調べるとプラグインに原因があるというのを見かけたので、
プラグインをすべて停止してみたのですが、Noticeが出たままです。また、Noticeだから気にせずデバックモードを[false]にするだけで
対応するという情報もあったので、放置したままでよろしいのでしょうか?修正する手引きがございましたらご教授いただけますと助かります。
-
サーバー会社は同じで、バージョンも同じはずです。
現在同じサーバーで再度テストしてもなお
Noiceが出ています。こんにちは、
プラグインか、てーまが、PHP4のコンストラクタを使っているために出ているエラーだと思います。
class-wp-widget.php line 170
ので、クラス名と同じメンバー関数を使っているものを見つけて修理するか、
deprecated_constructor_trigger_error フィルタで、エラーを非表示 (テストしていませんが)
add_filter('deprecated_constructor_trigger_error','__return_false');
みたいな感じで、とりあえす なかったことにするか
あたりではないかと思います。
テーマを変えると治りますね。
テーマはAvadaを使用しています。configのデバックモードをtrueにして
サーバにアップすると文字化けもしはじめましました。
前のファイルを入れなおすと治ります。
何か関係があるのでしょうか?デバックモードをfalseにしておけば大丈夫なのでしょうか?
できれば直したいです。
class-wp-widget.php line 170 ので、クラス名と同じメンバー関数を使っているものを見つけて修理するか、
というのはどういうことでしょうか?
すみません初心者で。参考サイトか何かございますでしょうか?
平たく言えば、テーマ自体が現在のWordPressのバージョンに対応していないってことです。
ForestRiver さん自身でテーマの問題箇所を修理するか、不良を承知で無視するかです。テーマ内の非推奨関数
function __()
を
function __construct()
に書き換えれば良いのでしょうか?思いつくままに、自分の知恵でやってみることです。
テストで出来ているんだもの、どこかに解決点があります。わたしも同じ現象に遭遇したことありましたが、わたしは別テーマに取り替えました。
了解いたしました。
本日の親切なご対応ありがとうございます。
がんばります。
有料テーマみたいなので、具体的には書けませんが
テーマで、テーマ独自のウィジェットがあると思いますが、
テーマのウィジェットクラスの記述が古いために、エラーが出ています。
デバックモードをfalseにしておけば大丈夫なのでしょうか?
記憶では、確かPHP7になると、PHP4のコンストラクタが使えなくなるので、それまでの間に開発者が、問題を発見しやすくするために エラーをはくように設定されたと思います
公式テーマのレビューでは、変更は必須とされています。
修正方法は、以下が参考になると思います。
https://developer.wordpress.org/themes/functionality/widgets/#sample-widget
class-wp-widget.php line 170は、wp-includes/class-wp-widget.php line 170 で
エラーを吐き出しているコードです。
public function WP_Widget( $id_base, $name, $widget_options = array(), $control_options = array() ) { _deprecated_constructor( 'WP_Widget', '4.3.0' ); WP_Widget::__construct( $id_base, $name, $widget_options, $control_options ); }
_deprecated_constructor()を使っています。
_deprecated_constructor()は、wp_includes/functions.php 3601 で定義され
if ( WP_DEBUG && apply_filters( 'deprecated_constructor_trigger_error', true ) ) { if ( function_exists( '__' ) ) { trigger_error( sprintf( __( 'The called constructor method for %1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.' ), $class, $version, '<pre>__construct()</pre>' ) ); } else { trigger_error( sprintf( 'The called constructor method for %1$s is <strong>deprecated</strong> since version %2$s! Use %3$s instead.', $class, $version, '<pre>__construct()</pre>' ) ); } }
関数内で、deprecated_constructor_trigger_error でコントロール可能に作られているようなので、
add_filter('deprecated_constructor_trigger_error','__return_false');
デバッグモードを停止して開発するよりは、この方法がいいと思います。
で、コンストラクターに関するエラー出力を停止できそうと考えフィルターの件を
書きました :)맹조様、gblsm様、nobita様 ご返答ありがとうございます。
nobita様 内部まで調査していただき誠にありがとうございます。上記を参考に修正してみようと思います。
有難う御座います。Avadaテーマ内の「woocommerce」を削除したらなぜか治りました。
woocommerceはショッピング機能をつかさどるファイルだと思うのですが、文字化けも治りました。
有難う御座います。
よかったのやらwoocommerceを更新したら動きが治ったという
海外のユーザもいたようなので、
「WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨」の
エラーはこれが原因だったようですね。
- トピック「WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっ」には新たに返信することはできません。