source

WP_Widget의 호출된 컨스트럭터 메서드는 버전 4.3.0 이후 사용되지 않습니다.

lovecheck 2023. 2. 17. 21:37
반응형

WP_Widget의 호출된 컨스트럭터 메서드는 버전 4.3.0 이후 사용되지 않습니다.

방금 WordPress 4.3으로 업데이트 했는데 뭔가 고장난 것 같아요.

페이지에 다음과 같은 에러가 표시됩니다.

주의: WP_Widget의 호출된 컨스트럭터 메서드는 버전 4.3.0 이후 사용되지 않습니다! 사용__construct()대신.3457회선의 /mnt/stor13-wc1-ord1/754452/www.eden-festival.com/web/content/securewp/wp-includes/functions.php에 있습니다.

고쳐야 할 게 있나요?

php 7은 php 4 오브젝트 구성을 지원하지 않기 때문에 다음과 같이 대체되었습니다.__construct()Wordpress 개발자는 플러그인 개발자가 플러그인 작동 방식을 변경하도록 알림 메시지를 만들었습니다.php 4는 오랫동안 사용되지 않았기 때문에 이 스타일의 오브젝트 구성을 사용할 이유가 없습니다.

어떻게 고칠까?

옵션 1 - 새로운 php 버전으로 업그레이드하지 않음

덧붙이기만 하면 된다add_filter('deprecated_constructor_trigger_error', '__return_false');

기능을 향상시킵니다.php 파일은 이러한 알림을 무시합니다.

옵션 2 - php 7로 업그레이드 할 수 있습니다.소거하는 것보다 문제에 대처하는 것을 선호합니다.

서드파티 플러그인의 경우 사용자가 직접 변경을 가하여 플러그인 개발자가 업데이트를 출시하면 변경사항이 덮어쓰게 됩니다.플러그인 개발자에게 문의하여 이 문제를 해결하는 것이 가장 좋은 방법입니다.

문제가 있는 플러그인을 찾아 변경합니다.

parent::WP_Widget

로.

parent::__construct

나도 같은 에러가 발생하는데 이렇게 수정했어.

class Dokan_Category_Widget extends WP_Widget {

    /**
     * Constructor
     *
     * @return void
     **/
    public function __construct() {
        $widget_ops = array( 'classname' => 'dokan-category-menu', 'description' => __( 'Dokan product category menu', 'dokan' ) );
        $this->WP_Widget( 'dokan-category-menu', 'Dokan: Product Category', $widget_ops );
    }
}

이러한 방식으로 컨스트럭터를 호출하는 방법은 php 7에서 권장되지 않기 때문에 호출 방식을 다음과 같이 대체했습니다.$this->WP_Widget()와 함께parent::__construct()

class Dokan_Category_Widget extends WP_Widget {

    /**
     * Constructor
     *
     * @return void
     **/
    public function __construct() {
        $widget_ops = array( 'classname' => 'dokan-category-menu', 'description' => __( 'Dokan product category menu', 'dokan' ) );
        //$this->WP_Widget( 'dokan-category-menu', 'Dokan: Product Category', $widget_ops );
        parent::__construct('dokan-category-menu', 'Dokan: Product Category', $widget_ops  );
    }
}

워드프레스 업데이트 후 업데이트되지 않은 플러그인과 다음과 같은 코드를 사용하고 있는 것 같습니다.class ***_Widget extends WP_Widget {.플러그인을 갱신하거나 갱신될 때까지 비활성화해야 합니다.

함수를 선언하고 부모 컨스트럭터를 호출하면 이 문제가 해결되었습니다.

class myClass extends WP_Widget {
  function __construct(){
     parent::__construct(...) // calls constructor from WP_Widget class
  }
}

이것은 경고의 일종입니다.오류를 숨길 수 있습니다.wp-config.php사이트 루트 디렉토리의 파일

정의하다WP_DEBUG', false);

나는 이 문제를 경험했고 /wp-includes/functions의 'true' 문장을 'false'로 변경함으로써 알게 되었습니다.php 에러를 무효로 합니다.

( WP_DEBUG & & apply_filters ( 'decrecommitted_constructor_trigger_error' , true )의 경우,

언급URL : https://stackoverflow.com/questions/32860218/the-called-constructor-method-for-wp-widget-is-deprecated-since-version-4-3-0

반응형