WP_Widget erro preterido no Wordpress V4.3

2

Este erro só aconteceu esta manhã quando atualizei o meu site wordpress para a versão 4.3. Dois outros sites na mesma hospedagem (e todos usando o CPanel como um portal de administração para a hospedagem) não estão tendo nenhum problema. Neste site problemático da empresa, embora no portal administrativo do wordpress e no site em direto, há um erro repetido várias vezes no topo da página, ou seja:

EutenholidohojesobreissoetalvezsejasobreaatualizaçãodoPHP4paraoPHP5,emboranãohajanenhumproblemacomosoutrossitesdoWPnomesmoservidor.Eutambémdesativeitodosospluginsnositeparatestareoproblemaaindaestavalá.Curtoderestaurarapartirdeumbackup(quenãoéfácildefazerepodecausarerrosporsipróprio)hámaisalguémcomesseproblemahoje/recentemente?

Nãoajudaqueamensagemdeerropareçasugerirumasoluçãoantesdesercortadanofinalcom

  

Use...". A mensagem de erro começa" company / public_html / wp-includes / ... ". A segunda linha é" método construtor para WP_Widget está obsoleto desde a versão 4.3.0.

A versão 4.3 é a versão que o WP foi atualizado até hoje. Aparentemente causou esse erro, mas eu não sei como consertá-lo.

Qualquer outra informação necessária para responder a esta pergunta, terei todo o gosto em fornecer.

    
por MuccyCork 19.08.2015 / 16:25

6 respostas

4

O erro não é realmente causado por sua versão do PHP (os construtores do PHP 4 não serão removidos até o PHP 7) - é um aviso produzido pelo WordPress em preparação para isso. Cada repetição do erro representa um plugin usando o código desatualizado.

Até que os autores dos seus plugins os atualizem, você pode executar o seguinte comando shell em um sistema Linux para encontrar as chamadas antigas do construtor:

grep -R "WP_Widget\(" /path/to/your/wp/install

Isto lhe dará uma lista de arquivos que você pode modificar na linha de comando ou usar o editor de plugins do WP. Seqüências de caracteres correspondentes - a maioria parent::WP_Widget(args) deve ser alterada para parent::__construct(args) .

    
por tjbp 20.08.2015 / 03:10
2

O WordPress está lhe dando um aviso de que esta construção está obsoleta, porque está se preparando para o PHP7. Você deve verificar seu código customizado e quaisquer plug-ins para o uso da construção WP_Widget. Existem (ainda) muitos plug-ins que precisam atualizar seu código.

Aqui está uma lista de plug-ins que usam a construção WP_Widget reprovada: enlace

Você pode esperar que os autores de plug-ins atualizem o código ou você mesmo pode alterar o código de plug-ins (temporariamente). Há um bom resumo sobre como alterar seu código (por Chris Christoff )

  

Basicamente, em vez de fazer isso:

     
  • {classname}::{classname}() como em WP_Widget::WP_Widget() ou
  •   
  • parent::{classname}() como em parent::WP_Widget() ou
  •   
  • {object}->{classname}() como em {object}->WP_Widget() (um mais específico   exemplo: $this->WP_Widget() )
  •   

Faça:

     
  • parent::__construct() para chamar o construtor da classe pai a partir de uma classe filha
  •   
  • $var = new {class name}() como em $var = new My_Widget_Class() para manter uma instância de um widget (não use My_Widget_Class como o nome da sua classe de widget, use algo mais exclusivo e aplicável para evitar conflitos de nome de classe com outros   plugins.
  •   
    
por studiobovenkamer 31.08.2015 / 16:49
2

Parece que não é WP_Widget que está sendo atualizado, mas a maneira como é mencionado.

Acredito que o que queremos é partir disso:

class mZ_Mindbody_day_schedule extends WP_Widget {

        function mZ_Mindbody_day_schedule() {
                $widget_ops = array(
                        'classname' => 'mZ_Mindbody_day_schedule_class',
                        'description' => __('Display class schedule for current day.', 'mz-mindbody-api')
                        );
                $this->WP_Widget('mZ_Mindbody_day_schedule', __('Today\'s MindBody Schedule', 'mz-mindbody-api'),
                                                        $widget_ops );
        } 

Para isso:

class mZ_Mindbody_day_schedule extends WP_Widget {

        function mZ_Mindbody_day_schedule() {
                $widget_ops = array(
                        'classname' => 'mZ_Mindbody_day_schedule_class',
                        'description' => __('Display class schedule for current day.', 'mz-mindbody-api')
                        );
                parent::__construct('mZ_Mindbody_day_schedule', __('Today\'s MindBody Schedule', 'mz-mindbody-api'),
                                                        $widget_ops );
        } 

Onde é apenas a linha seis do código acima que é atualizado.

    
por MikeiLL 24.09.2015 / 23:12
1

Se você quiser manter o WP_DEBUG ativado e quiser ocultar este tipo específico de erro, coloque em seu tema functions.php esta linha:

add_filter('deprecated_constructor_trigger_error', '__return_false');

Isso evitará que esse tipo de erro seja exibido.

Espero que ajude:)

    
por Lorenzo Zottar 27.08.2015 / 23:16
0

Eu estava em um barco semelhante (primeiro tinha que consertar alguns widgets personalizados em um tema), mas tinha a mensagem mesmo depois de corrigi-los.

Comutada para um tema padrão: ainda teve o mesmo erro.

TL; DR : Desativação de plugins iniciados um por um ... encontrados enlace foi o culpado.

    
por bishless 19.08.2015 / 21:24
-1

O modo de depuração do Wordpress pode produzir esses tipos de mensagens.

Eu tive o mesmo problema em um dos meus sites.

Talvez você tenha esta linha de código no seu arquivo wp-config.php:

define('WP_DEBUG', true);

Tente alterá-lo para:

define('WP_DEBUG', false);

Espero que ajude.

    
por Emanuel David Brigham Vitorino 27.08.2015 / 13:47