Critics have remarked that those four worthies were truly peerless throughout the ages; yet the present falls short of the pastβthe ancients favored unadorned simplicity, whereas the moderns prefer refined elegance. Styles of substance and ornament rise and fall in succession, shifting with the changing mores of the times; such evolution is simply the natural order of things. The ideal lies in honoring antiquity without clashing with the present, and embracing modernity without succumbing to its flawsβembodying that perfect balance of substance and refinement that defines the true gentleman. There is surely no need to abandon a carved palace in favor of a cave dwelling, or to trade a jade carriage for a primitive cart with solid wooden wheels.
Current path: home/u461622454/domains/samslettings.com/public_html/wp-includes/
β¬οΈ Go up: /home/u461622454/domains/samslettings.com/public_html
<?php
/**
* Widget API: WP_Widget_Factory class
*
* @package WordPress
* @subpackage Widgets
* @since 4.4.0
*/
/**
* Singleton that registers and instantiates WP_Widget classes.
*
* @since 2.8.0
* @since 4.4.0 Moved to its own file from wp-includes/widgets.php
*/
#[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_hash( $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_hash( $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 );
foreach ( $keys as $key ) {
// Don't register new widget if old widget with the same id is already registered.
if ( in_array( $this->widgets[ $key ]->id_base, $registered, true ) ) {
unset( $this->widgets[ $key ] );
continue;
}
$this->widgets[ $key ]->_register();
}
}
/**
* Returns the registered WP_Widget object for the given widget type.
*
* @since 5.8.0
*
* @param string $id_base Widget type ID.
* @return WP_Widget|null
*/
public function get_widget_object( $id_base ) {
$key = $this->get_widget_key( $id_base );
if ( '' === $key ) {
return null;
}
return $this->widgets[ $key ];
}
/**
* Returns the registered key for the given widget type.
*
* @since 5.8.0
*
* @param string $id_base Widget type ID.
* @return string
*/
public function get_widget_key( $id_base ) {
foreach ( $this->widgets as $key => $widget_object ) {
if ( $widget_object->id_base === $id_base ) {
return $key;
}
}
return '';
}
}