El llamado método constructor para WP_Widget es obsoleto...

A partir de la versión 4.3.0 de wordpress muchos usuarios se han encontrado con el siguiente aviso:

"Notice: ¡El llamado método constructor para WP_Widget es obsoleto desde la versión 4.3.0! Utiliza __construct()".
O bien con su versión en inglés:
"Notice: The called constructor method for WP_Widget is deprecated since version 4.3.0! Use __construct()"

El motivo de dicho mensajes es debido a que los "constructores" tendrán a partir de la versión PHP 7 una nuevo estilo (los constructores del estilo antiguo están OBSOLETOS en PHP 7.0, por lo que serán eliminados en una futura versión). ¿Cómo solucionarlo? Lo primero de todo es identificar el plugin o tema responsable y para ellos activaremos el modo depuración en wordpress mediante la siguiente línea en el archivo wp-config. php:

define('WP_DEBUG', true);

Identificado el causante del error, buscaremos una estructura como esta:

class XXX {
    function XXX (){
      .......
      $this->WP_Widget(....)
      .......
    }
}

Lo que tenemos que hacer es sustituir "function XXX()" por "function __construct()" y "$this->WP_Widget" por "parent::__construct"

class XXX {
    function __construct() {
      .......
      parent::__construct(.....)
      .......
    }
}

6 comentarios


  1. este es el código que tengo:
    function __construct()
    {
    global $table_prefix;

    $this->version = OT_VERSION;
    $this->table_name = $table_prefix . 'option_tree';
    $this->option_array = $this->option_tree_data();

    ayúdame porfi como cambiarlo!!!

    Responder

  2. Hola Almendron!!

    EL post es ideal para el error actual en mi pagina pero no se en donde voy hacer el cambio de código que indicas.

    El error es este:

    Notice: The called constructor method for WP_Widget in bp_160_widget is deprecated since version 4.3.0! Use

    __construct()

    instead. in /home/cpoliva/public_html/site/wp-includes/functions.php on line 3892

    Entiendo que no es en functions.php

    El sitio es http://www.losreportesdelichi.com/site/

    Responder

    1. Probablemente sea algún plugin o el propio tema.
      Haz una prueba: desactiva todos los plugins y cambia de tema (pon uno de los que trae por defecto Wordpres). Mantén en el config.php la línea define('WP_DEBUG', true);
      Después de hacer esto, no debería salirte el mensaje. Ahora ve activando-probando plugin a plugin hasta encontrar al responsable. Si no fuera ninguno, entonces vuelve a activar el tema que usas ahora a ver si entonces aparece.

      PD. LO del error en el archivo functions.php del directorio "wp-includes" no es (salvo que tengas una versión muy antigua de WP).

      Responder

  3. Buenos días Miguel

    He visto un post tuyo acerca de cómo solucionar el error Notice: ¡El método de llamada al constructor WP_Widget en LayerSlider_Widget está obsoleto desde la versión 4.3.0! Utiliza
    __construct()
    en su lugar. in /home/alfonsor/www/wp-includes/functions.php on line 3893

    Te agradecería si pudieras ayudarme a quitar el error de mi web puesto que no entiendo cómo recomiendas solucionarlo

    Por favor te agradecería si me puedes facilitar tu numero de teléfono para contactar contigo y me puedas ayudar a quitar el error de mi web como podrás ver que aparece al principio de la pagina principal

    Espero recibir noticias

    Muchas gracias

    Un cordial saludo.

    Alfonso Ros Castellar
    Consultor Finanzas - Economista - Control de Gestión
    Colegiado nº 9.025
    96 061 00 40 - 667 98 34 73
    http://www.alfonsoros.com

    Responder

    1. Me encantaría ayudarte pero el plugin LayerSlider, que es el responsable del error, es de pago y por tanto no tengo acceso a él. Ponte en contacto con el soporte de dicho plugin.

      De todas formas, hay una forma de evitar que salga el error:
      1) Edita el archivo wp-config. php (haz primero una copia)
      2) Busca la línea define('WP_DEBUG', true); y la sustituyes por define('WP_DEBUG', false);

      Esto solo evitará que salga el mensaje. No repara el error. No obstante, es solo una "notice". Eso significa que el plugin seguirá funcionando aunque es muy probable que con el tiempo deje de hacerlo (una vez que dicha función quede totalmente obsoleta)

      Responder

Responder a Miguel Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *