Nový typ konstruktoru ve WordPressu 4.3.0

0
321

Pokud používáte ve WordPressu debug mód (v souboru wp-config.php máte WP_DEBUG na hodnotě true), zřejmě jste si všimli následující chybové hlášky :

<b>Notice</b>: The called constructor method for WP_Widget is <strong>deprecated</strong> since version 4.3.0! Use <pre>__construct()</pre> instead. in <b>/data/web/virtuals/83452/virtual/www/domains/papik-wordpress.cz/wp-includes/functions.php</b> on line <b>3457</b><br />

V kostruktoru vašeho widgetu je třeba použít klíčové slovo __construct místo metody kopírující název této nebo rodičovské třídy. Je to z toho důvodu, že od nejnovější verze PHP 7.0 je tato verze konstruktoru považována za zastaralou. (http://php.net/manual/en/language.oop5.decon.php)

Jak vypadá tedy špatně a správně?

Špatně:

class Some_Widget extends WP_Widget
{
public function Some_Widget()
{

parent::WP_Widget(‚Some Widget‘, __(‚Some Widget name‘,’textdomain‘), array(‚classname‘ => ‚Some_Widget‘, ‚description‘ => __(‚This is my awesome widget‘,’textdomain‘) ));
}

}

Správný a doporučený postup:


class Some_Widget extends WP_Widget
{
public function __construct()
{

parent::__construct(‚Some Widget‘, __(‚Some Widget name‘,’textdomain‘), array(‚classname‘ => ‚Some_Widget‘, ‚description‘ => __(‚This is my awesome widget‘,’textdomain‘) ));
}

}

Všimněte si, že jak u vlastní třídy, tak i u rodičovské je vždy použit konstruktor s názvem __construct. Je to navíc i přehlednější :).

Pokud chcete nadále využívat debug mód wordpressu, máte velké množství pluginů na úpravu, ale zároveň z libovolného důvodu jej nechcete měnit, můžete místo toho vložit následující kód do souboru functions.php:

add_filter('deprecated_constructor_trigger_error', '__return_false');

Podotýkám, že se ale jedná pouze o dočasné řešení(!)

LEAVE A REPLY

Please enter your comment!
Please enter your name here