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.
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:
- 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.
- 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() y parent::WP_Widget( o $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