This post is also available in:
English
Recentemente decidi actualizar um dos meus websites antigos, feito com WordPress. Entre os aspectos que estavam desactualizados, destaca-se o tema que eu comprei á mais de 6 anos atrás, portanto numa versão muito antiga do WordPress.
Como mandam as boas práticas, activei o Debug Mode do WordPress para poder identificar qualquer incompatibilidade dos temas e plugins com a versão mais recente do WordPress, 5.6.2 neste caso. Ao recarregar a página inicial, uma série de erros do PHP apareceram, entre os quais o que dizia: “The called constructor method for WP_Widget is deprecated since version 4.3.0!”.
Foi relativamente fácil descobrir a causa do err: Versões antigas do WordPress eram baseada em versões antigas do PHP, cujo suporte a Orientação á Objectos ainda não era o que conhecemos hoje. Portanto, o WordPress adoptou uma prática de usar a função com o mesmo nome que a classe como constructor da classe. A solução: Substituir os antigos “pseudo-constructores” do WordPress pela função nativa __construct do PHP. Assim sendo, todos Widgets que tem esta função:
class My_Widget extends WP_Widget {
function My_Widget() {
$widget_ops = array('classname' => 'my-widget', 'description' => 'My Widget description.');
$control_ops = array('id_base' => 'my-widget');
$this->WP_Widget('my-widget', 'My Widget', $widget_ops, $control_ops);
}
function widget($args, $instance) {
Devem ser substituidas para que o construtor seja:
class My_Widget extends WP_Widget {
function __construct() {
parent::__construct(
'my-widget', // Base ID
'My Widget', // Name
array( 'description' => 'My Widget description.' ) // Args
);
}
function widget($args, $instance) {
É necessário fazer essa alteráção para todos os Widgets que ainda usam o formato antigo de definição do constructor. O bom é que por ser um erro do tipo E_USER_DEPRECATED, o erro não vai aparecer no seu website quando o Debug Mode estiver inactivo.






Comentários Recentes