WordPress
 

サーバのPHPを 8.3 へアップデート 完了

保留していた PHP8.2 へのアップデート ですが、「Uncaught ArgumentCountError」が発生する原因と言うか修正方法が判明したので、アップデートしてみました。PHPのバージョンは現時点で最新の 8.3.21 です。

 

前回の 「/******/wp-includes/class-wp-widget-factory.php」の修正では、原因となっている widget のプラグインはそのままに暫定対処の形で、Wordpress がバージョンアップすると修正したファイルも書き戻されてしまうので、根本的な解決にはならず。

そこで、問題となっているプラグインそのものを修正です。

エラーメッセージをよく見ると、問題が発生している widget のプラグインがわかるのでプラグインのソースを開いて widget のクラスのコンストラクタの記述を修正するだけ

修正前

class myWidget extends WP_Widget {
    function myWidget() {
      parent::__construct(false, $name = 'myWidget',array("description"=>"myWidget"));
    }
    :
}

修正後

class myWidget extends WP_Widget {
    function __construct() {
        parent::__construct(false, $name = 'myWidget',array("description"=>"myWidget"));
    }
    :
}

function myWidget() の記述を function __construct() に書き換えれば OK
あと、add_action() create_function を使っている場合は、合わせて無名関数に書き直す必要ありです。


7つのコメントがあります : サーバのPHPを 8.3 へアップデート 完了

  • A jaka wtyczka powodowała błąd. Ja mam na stronie sp.luzino.pl to samo i nie mogę znaleźć widgetu który ten bład powoduje

  • To są błędy z logów serwera:

    /home/spluzino/public_html/wp-includes/class-wp-widget-factory.php(62): WP_Widget->__construct()
    #1 /home/spluzino/public_html/wp-includes/widgets.php(123): WP_Widget_Factory->register()
    #2 /home/spluzino/public_html/wp-content/themes/SP_Badkowski35/library/widgets.php(271): register_widget()
    #3 /home/spluzino/public_html/wp-includes/class-wp-hook.php(341): artWidgetsInit()
    #4 /home/spluzino/public_html/wp-includes/class-wp-hook.php(365): WP_Hook->apply_filters()
    #5 /home/spluzino/public_html/wp-includes/plugin.php(522): WP_Hook->do_action()
    #6 /home/spluzino/public_html/wp-includes/widgets.php(1884): do_action()
    #7 /home/spluzino/public_html/wp-includes/class-wp-hook.php(341): wp_widgets_init()
    #8 /home/spluzino/public_html/wp-includes/class-wp-hook.php(365): WP_Hook->apply_filters()
    #9 /home/spluzino/public_html/wp-includes/plugin.php(522): WP_Hook->do_action()
    #10 /home/spluzino/public_html/wp-settings.php(742): do_action()
    #11 /home/spluzino/public_html/wp-config.php(88): require_once(‘/home/spluzino/…’)
    #12 /home/spluzino/public_html/wp-load.php(50): require_once(‘/home/spluzino/…’)
    #13 /home/spluzino/public_html/wp-blog-header.php(13): require_once(‘/home/spluzino/…’)
    #14 /home/spluzino/public_html/index.php(17): require(‘/home/spluzino/…’)
    #15 {main}
    thrown in /home/spluzino/public_html/wp-includes/class-wp-widget.php on line 163
    [14-Feb-2026 18:29:23 UTC] PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function WP_Widget::__construct(), 0 passed in /home/spluzino/public_html/wp-includes/class-wp-widget-factory.php on line 62 and at least 2 expected in /home/spluzino/public_html/wp-includes/class-wp-widget.php:163

    • MaCONEY

      To jest ta część, która powoduje problem.

      #2 /home/spluzino/public_html/wp-content/themes/SP_Badkowski35/library/widgets.php(271): register_widget()

  • Dziękuję za odpowiedź. A możesz mi podpowiedzieć jak to naprawić. Bo już od dłuższego czasu próbuję różnych rzeczy i nie mam już pomysłu. Byłbym wdzięczny za pomoc.
    Grzegorz

    • MaCONEY

      Postępuj zgodnie z instrukcjami w artykule, aby otworzyć kod źródłowy wtyczki i zmodyfikować konstruktor klasy widżetu.

      Przykład

      Przed zmianą

      class myWidget extends WP_Widget {
      function myWidget() {
      parent::__construct(false, $name = ‘myWidget’,array(“description”=>”myWidget”));
      }
      :
      }

      Po zmianie

      class myWidget extends WP_Widget {
      function __construct() {
      parent::__construct(false, $name = ‘myWidget’,array(“description”=>”myWidget”));
      }
      :
      }

    • MaCONEY

      Funkcja create_function również powoduje błąd. Można tego uniknąć, przepisując ją jako funkcję anonimową.

      add_action(‘widgets_init’, create_function( ”, ‘return register_widget(“mywidget”);’ ) );

      Zmień to na następujący kod:

      add_action( ‘widgets_init’, function() { return register_widget(“mywidget”); } );

MaCONEYにコメントをする