サポート » 使い方全般 » WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっ

  • 解決済 ForestRiver

    (@forestriver)


    wordpressのサイトをテストから本番に移すと、
    「WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっています! 」
    というNoticeが出てきました。

    調べるとプラグインに原因があるというのを見かけたので、
    プラグインをすべて停止してみたのですが、Noticeが出たままです。

    また、Noticeだから気にせずデバックモードを[false]にするだけで
    対応するという情報もあったので、放置したままでよろしいのでしょうか?

    修正する手引きがございましたらご教授いただけますと助かります。

15件の返信を表示中 - 1 - 15件目 (全17件中)
  • 천궁 메텔

    (@digitmaetel)

    テスト環境と本番環境の PHP バージョンが異なりませんか

    トピック投稿者 ForestRiver

    (@forestriver)

    サーバー会社は同じで、バージョンも同じはずです。

    現在同じサーバーで再度テストしてもなお
    Noiceが出ています。

    gblsm

    (@gblsm)

    テーマを変えても同様でしょうか?

    nobita

    (@nobita)

    こんにちは、

    プラグインか、てーまが、PHP4のコンストラクタを使っているために出ているエラーだと思います。

    class-wp-widget.php line 170

    ので、クラス名と同じメンバー関数を使っているものを見つけて修理するか、

    deprecated_constructor_trigger_error フィルタで、エラーを非表示 (テストしていませんが)

    add_filter('deprecated_constructor_trigger_error','__return_false');

    みたいな感じで、とりあえす なかったことにするか

    あたりではないかと思います。

    トピック投稿者 ForestRiver

    (@forestriver)

    テーマを変えると治りますね。
    テーマはAvadaを使用しています。

    configのデバックモードをtrueにして
    サーバにアップすると文字化けもしはじめましました。
    前のファイルを入れなおすと治ります。
    何か関係があるのでしょうか?

    トピック投稿者 ForestRiver

    (@forestriver)

    デバックモードをfalseにしておけば大丈夫なのでしょうか?

    できれば直したいです。

    class-wp-widget.php line 170
    
    ので、クラス名と同じメンバー関数を使っているものを見つけて修理するか、

    というのはどういうことでしょうか?
    すみません初心者で。

    参考サイトか何かございますでしょうか?

    천궁 메텔

    (@digitmaetel)

    平たく言えば、テーマ自体が現在のWordPressのバージョンに対応していないってことです。
    ForestRiver さん自身でテーマの問題箇所を修理するか、不良を承知で無視するかです。

    トピック投稿者 ForestRiver

    (@forestriver)

    テーマ内の非推奨関数
    function __()

    function __construct()
    に書き換えれば良いのでしょうか?

    천궁 메텔

    (@digitmaetel)

    思いつくままに、自分の知恵でやってみることです。
    テストで出来ているんだもの、どこかに解決点があります。

    わたしも同じ現象に遭遇したことありましたが、わたしは別テーマに取り替えました。

    トピック投稿者 ForestRiver

    (@forestriver)

    了解いたしました。

    本日の親切なご対応ありがとうございます。

    がんばります。

    gblsm

    (@gblsm)

    Avada が有償テーマなのでしたら販売元で対処してくれるかもしれませんね。

    nobita

    (@nobita)

    有料テーマみたいなので、具体的には書けませんが

    テーマで、テーマ独自のウィジェットがあると思いますが、

    テーマのウィジェットクラスの記述が古いために、エラーが出ています。

    デバックモードを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');

    デバッグモードを停止して開発するよりは、この方法がいいと思います。

    で、コンストラクターに関するエラー出力を停止できそうと考えフィルターの件を
    書きました :)

    トピック投稿者 ForestRiver

    (@forestriver)

    맹조様、gblsm様、nobita様 ご返答ありがとうございます。
    nobita様 内部まで調査していただき誠にありがとうございます。

    上記を参考に修正してみようと思います。
    有難う御座います。

    トピック投稿者 ForestRiver

    (@forestriver)

    Avadaテーマ内の「woocommerce」を削除したらなぜか治りました。
    woocommerceはショッピング機能をつかさどるファイルだと思うのですが、

    文字化けも治りました。
    有難う御座います。
    よかったのやら

    トピック投稿者 ForestRiver

    (@forestriver)

    woocommerceを更新したら動きが治ったという
    海外のユーザもいたようなので、
    「WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨」の
    エラーはこれが原因だったようですね。

15件の返信を表示中 - 1 - 15件目 (全17件中)
  • トピック「WP_Widget のコンストラクターメソッドはバージョン 4.3.0 から非推奨になっ」には新たに返信することはできません。