As of WordPress 4.3 older versions of constructor functions are deprecated. Typically these are common in widgets, where you’re extending the parent WP_Widget class. I’ve recently updated a few of my older versions in my plugins and on client site’s, here’s the basics.
Older, depreciated code can be found here.
This is the new way:
| <?php | |
| /** | |
| * Correct method for WordPress 4.3 | |
| * @see https://make.wordpress.org/core/2015/07/02/deprecating-php4-style-constructors-in-wordpress-4-3/ | |
| * @see http://codex.wordpress.org/Widgets_API | |
| */ | |
| class My_Widget extends WP_Widget { | |
| /** | |
| * Sets up the widgets name etc | |
| */ | |
| public function __construct() { | |
| $widget_args = array( ‘description’ => __( ‘A Foo Widget’, ‘text_domain’ ) ); | |
| parent::__construct( | |
| ‘foo_widget’, // Base ID | |
| __( ‘Widget Title’, ‘text_domain’ ), // Name | |
| $widget_args // Args | |
| ); | |
| } | |
It breaks down to being an older PHP method – naming the constructor function the same as the class and/or calling the parent constructor via the class name. Newer versions of PHP allow us to call parent classes via parent:: and utilize the __construct() function, which is now the preferred method for WordPress.
For more information, check out the WP Core Blog post on the subject and the Widgets API Documentation.
Comments
2 responses to “Fixing Your Deprecated Widget Constructors in WordPress 4.3”
Fyi, typo in your first sentence. Should be “constructor functions are deprecated” 🙂
Ah, nice find, thanks for the heads up – I’ve updated it accordingly.