web-dev-qa-db-fra.com

La méthode du constructeur appelée pour WP_Widget est obsolète à partir de la version 4.3.0.

Je viens de mettre à jour WordPress 4.3 et il semble que quelque chose soit cassé.

Je reçois cette erreur qui apparaît sur ma page:

Remarque: La méthode du constructeur appelée pour WP_Widget est obsolète à partir de la version 4.3.0! Utilisez __construct() à la place. dans /mnt/stor13-wc1-ord1/754452/www.eden-festival.com/web/content/securewp/wp-includes/functions.php à la ligne 3457

Y at-il quelque chose qui doit être corrigé?

18
aniruddh

Puisque php 7 ne supporte plus l'ancienne construction d'objet php 4 et a été remplacé par __construct(), les développeurs de Wordpress ont créé un message pour que les développeurs de plugins changent le mode de fonctionnement de leurs plugins afin de pouvoir s'exécuter sur les prochaines versions de php. il y a peu de temps il n'y a aucune raison d'utiliser ce style de construction d'objet.

Comment réparer?

Option 1 - ne pas mettre à niveau vers les nouvelles versions php

il suffit d'ajouter add_filter('deprecated_constructor_trigger_error', '__return_false');

dans votre fichier functions.php, il ignorera ces notifications.

Option 2 - pourrait passer à php 7/préférer régler le problème plutôt que de le réduire au silence

S'il s'agit d'un plug-in tiers, sachez que si vous apportez les modifications vous-même et que le développeur du plug-in publie une mise à jour, vos modifications seront remplacées. Contacter le développeur du plug-in pour résoudre ce problème sera la meilleure option.

Trouvez le plugin problématique et changez

parent::WP_Widget

À 

parent::__construct

37
Gal

Je reçois aussi la même erreur et je l'ai corrigé de telle manière 

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 );
    }
}

En tant que moyen d'appeler le constructeur de cette manière est obsolète en php 7, j'ai donc remplacé le moyen d'appel par $this->WP_Widget() par 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  );
    }
}
12
Ganesh

Je suppose que vous utilisez un plugin qui n'est pas mis à jour après les mises à jour de wordpress et dont le code tel que class ***_Widget extends WP_Widget {.

2
Prafulla Kumar Sahu

Déclarer une fonction puis appeler le constructeur parent a résolu ce problème pour moi.

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