• ResueltoModerador almendron

    (@almendron)


    Uso un plugin que ni siquiera está ya en el repositorio de wordpress y el caso es que, mientras encuentro uno que lo sustituya, me gustaría solventar el problema que aparece al activar el DEBUG: «Notice: ¡El llamado método constructor para WP_Widget es obsoleto desde la versión 4.3.0! Utiliza __construct()».
    Tras buscar al respecto, he encontrado una posible solución pero que no acaba de funcionar.
    En primer lugar, os pongo el código que se encuentra antes de la porción donde se produce el error:

    add_action( 'widgets_init', 'olt_subpages_navigation_load_widgets' );
    //if(SUBPAGE_NAVIGATION_STYLE)
    add_action( 'init', 'init_subpages_navigation_plugin' );
    
    /**
     * Register our widget.
     * 'olt_subpages_navigation_Widget' is the widget class used below.
     *
     * @since 1.0
     */
    function olt_subpages_navigation_load_widgets() {
    	register_widget( 'OLT_Subpages_Navigation_Widget' );
    }

    Después tenemos la parte del error. Ya incluyo las modificaciones:

    class OLT_Subpages_Navigation_Widget extends WP_Widget {
    	/**
    	 * Widget setup.
    	 */
    // ORIGINAL: function OLT_Subpages_Navigation_Widget() {
    // Sustituida por la siguiente linea
    	function __construct() {
    		/* Widget settings. */
    		$widget_ops = array( 'classname' => 'widget_subpages_navigation', 'description' => __('A widget that creates a subpages navigation menu.', 'olt_subpages_navigation') );
    
    		/* Widget control settings. */
    		$control_ops = array( 'width' => 400, 'height' => 350, 'id_base' => 'olt-subpages-navigation-widget' );
    
    		/* Create the widget. */
    // ORIGINAL: $this->WP_Widget( 'olt-subpages-navigation-widget', __('Subpages Navigation', 'olt_subpages_navigation'), $widget_ops, $control_ops );
    // Sustituimos por
    parent::__construt ( 'olt-subpages-navigation-widget', __('Subpages Navigation', 'olt_subpages_navigation'), $widget_ops, $control_ops );
    	}

    Una vez realizadas los cambios me sale ahora el siguiente error:
    Call to undefined method WP_Widget::__construt()
    La línea donde se produce el error es:
    parent::__construt ( 'olt-subpages-navigation-widget', __('Subpages Navigation', 'olt_subpages_navigation'), $widget_ops, $control_ops );

    ¿Alguna idea?

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • Moderador LGrusin

    (@lgrusin)

    parent::__construt
    o
    parent::__construct
    ¿?

    Un saludo

    Moderador almendron

    (@almendron)

    ¡Será posible! Habré mirado el código mil veces y no me había dado cuenta del error tipográfico.
    Menos mal que te has dado tú cuenta. Muchas gracias.

    NOTA. Por si le sirve a otros usuarios.

    MENSAJE DE ERROR: Notice: ¡El llamado método constructor para WP_Widget es obsoleto desde la versión 4.3.0! Utiliza __construct()».

    En primer lugar, debemos identificar el causante del error (plugin o tema). Tendremos una estructura parecida a

    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
    Las variables y cadenas que van a continuación de WP_Widget se mantienen.
    En mi caso, por ejemplo, sustituí
    $this->WP_Widget( 'olt-subpages-navigation-widget', __('Subpages Navigation', 'olt_subpages_navigation'), $widget_ops, $control_ops );
    por
    parent::__construct ( 'olt-subpages-navigation-widget', __('Subpages Navigation', 'olt_subpages_navigation'), $widget_ops, $control_ops );

Viendo 2 respuestas - de la 1 a la 2 (de un total de 2)
  • El debate ‘Construct para WP_Widget’ está cerrado a nuevas respuestas.