wppaste
WordPress

WP_Widget_Factory

Since
2.8.0, 4.4.0
Source
wp-includes/class-wp-widget-factory.php:16
Singleton that registers and instantiates WP_Widget classes.

Compatibility

WordPress
since 4.4.0
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in every tracked release (6.7.7 to 7.1.0).

Properties · 1

$widgetsarraypublic
Widgets array.

Methods · 7

Source code

#[AllowDynamicProperties]class WP_Widget_Factory { 	/**	 * Widgets array.	 *	 * @since 2.8.0	 * @var array	 */	public $widgets = array(); 	/**	 * PHP5 constructor.	 *	 * @since 4.3.0	 */	public function __construct() {		add_action( 'widgets_init', array( $this, '_register_widgets' ), 100 );	} 	/**	 * PHP4 constructor.	 *	 * @since 2.8.0	 * @deprecated 4.3.0 Use __construct() instead.	 *	 * @see WP_Widget_Factory::__construct()	 */	public function WP_Widget_Factory() {		_deprecated_constructor( 'WP_Widget_Factory', '4.3.0' );		self::__construct();	} 	/**	 * Registers a widget subclass.	 *	 * @since 2.8.0	 * @since 4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object	 *              instead of simply a `WP_Widget` subclass name.	 *	 * @param string|WP_Widget $widget Either the name of a `WP_Widget` subclass or an instance of a `WP_Widget` subclass.	 */	public function register( $widget ) {		if ( $widget instanceof WP_Widget ) {			$this->widgets[ spl_object_id( $widget ) ] = $widget;		} else {			$this->widgets[ $widget ] = new $widget();		}	} 	/**	 * Un-registers a widget subclass.	 *	 * @since 2.8.0	 * @since 4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object	 *              instead of simply a `WP_Widget` subclass name.	 *	 * @param string|WP_Widget $widget Either the name of a `WP_Widget` subclass or an instance of a `WP_Widget` subclass.	 */	public function unregister( $widget ) {		if ( $widget instanceof WP_Widget ) {			unset( $this->widgets[ spl_object_id( $widget ) ] );		} else {			unset( $this->widgets[ $widget ] );		}	} 	/**	 * Serves as a utility method for adding widgets to the registered widgets global.	 *	 * @since 2.8.0	 *	 * @global array $wp_registered_widgets	 */	public function _register_widgets() {		global $wp_registered_widgets;		$keys       = array_keys( $this->widgets );		$registered = array_keys( $wp_registered_widgets );		$registered = array_map( '_get_widget_id_base', $registered );

Changelog

Introduced in 2.8.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

4.4.0
Moved to its own file from wp-includes/widgets.phpfrom the docblock
2.8.0
Introduced.from the docblock

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/class-wp-widget-factory.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.