Seleccionar página

Error método constructor Widget al actualizar WordPress o versión PHP

por | Oct 26, 2017 | Wordpress

Error método constructor: The called constructor method for WP_Widget … is deprecated …

Si has actualizado tu WordPress a una versión 4.3 o mayor y tienes algún plugin que crea Widget desarrollado con PHP4 te puedes encontrar con el siguiente error método constructor widget:

The called constructor method for WP_Widget … is deprecated …

Use __construct() instead.

 

error método constructor widget

Esto es debido a que la forma de crear Widgets con PHP 4 quedo obsoleta de manera oficial en la versión 4.3 de WordPress. Además si actualizas tu servidor a PHP7, o tu WordPress a 4.8.+ tu página dejará de funcionar ya que no hay soporte para los constructores de PHP4.

Vamos a repasar en este artículo las soluciones posibles para eliminar este error de WordPress:

  1. Modificaremos el código de los widgets creados con PHP 4 con el nuevo código que nos indican en la documentación técnica para desarrolladores de WordPress.
  2. Si no tenemos acceso al código del plugin que provoca el error o no nos atrevemos a realizar modificaciones, aprenderemos a añadir un filtro en nuestro WordPress que ignore el error y cargue la web.

Modificar el código de los widgets creados con PHP 4

Si tienes acceso al código que provoca el error (en el mismo aviso de error te muestra el plugin que lo causa y la línea de código) , entonces busca la carpeta del plugin y la línea del código donde se llama al constructor del widget.

Encontrarás algo así:

class widget_ejemplo extends WP_Widget {
 
 // constructor
 function widget_ejemplo() {
 parent::WP_Widget(
 false,
 __( 'Ejemplo Widget', 'ejemplo-widget' ),
 array( 'description' => __( 'Mi ejemplo widget', 'ejemplo-widget' ) ) );
 }
 
 // ...
}

También puedes encontrar el constructor del Widget con el siguiente código:

class widget_ejemplo extends WP_Widget {
 
 // constructor
 function widget_ejemplo() {
 $this->WP_Widget(
 false,
 __( 'Ejemplo Widget', 'ejemplo-widget' ),
 array( 'description' => __( 'Mi ejemplo widget', 'ejemplo-widget' ) ) );
 }
 
 // ...
}

Después de localizar el código, tenemos que modificar las dos primeras líneas debajo de:  //constructor:

vamos a cambiar function widget_ejemplo() por function __construct()parent::WP_Widget( $this->WP_Widget( por parent::__construct(

 function __construct() {
 parent::__construct(

El código final quedaría de la siguiente manera:

class widget_ejemplo extends WP_Widget {
 
 // constructor
 function __construct() {
 parent::__construct(
 false,
 __( 'Ejemplo Widget', 'ejemplo-widget' ),
 array( 'description' => __( 'Mi ejemplo widget', 'ejemplo-widget' ) ) );
 }
 
 // ...
}

Guarda los cambios en el archivo y comprueba que el error ha desaparecido.

Filtro en WordPress para ignorar constructores obsoletos

Si no tenemos acceso al código del plugin que provoca el error o no nos atrevemos a realizar modificaciones, puedes intentar primero ponerte en contacto con el desarrollador del plugin para que modifique los archivos y actualice el plugin.

Mientras esperas puedes añadir esta línea en tu archivo functions.php

add_filter('deprecated_constructor_trigger_error', '__return_false');

con esta línea conseguimos que WP ignore el error método constructor widget y siga ejecutando la página.

Si el desarrollador no actualiza el plugin intenta modificar el código siguiendo el ejemplo de este post o busca un plugin que realice funciones similares y esté actualizado.

 

 

 

0 comentarios

Enviar un comentario

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