X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/5aa86a9053fb0fa15846bb60aac2fb8fdfff524a..ceb5a929e00123b4e224977c6b5a149f6431b250:/wp-includes/widgets.php diff --git a/wp-includes/widgets.php b/wp-includes/widgets.php index 2dfafcb5..6bd99473 100644 --- a/wp-includes/widgets.php +++ b/wp-includes/widgets.php @@ -70,13 +70,6 @@ class WP_Widget { // Functions you'll need to call. - /** - * PHP4 constructor - */ - function WP_Widget( $id_base = false, $name, $widget_options = array(), $control_options = array() ) { - WP_Widget::__construct( $id_base, $name, $widget_options, $control_options ); - } - /** * PHP5 constructor * @@ -90,7 +83,7 @@ class WP_Widget { * - width: required if more than 250px * - height: currently not used but may be needed in the future */ - function __construct( $id_base = false, $name, $widget_options = array(), $control_options = array() ) { + function __construct( $id_base, $name, $widget_options = array(), $control_options = array() ) { $this->id_base = empty($id_base) ? preg_replace( '/(wp_)?widget_/', '', strtolower(get_class($this)) ) : strtolower($id_base); $this->name = $name; $this->option_name = 'widget_' . $this->id_base; @@ -98,6 +91,13 @@ class WP_Widget { $this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) ); } + /** + * PHP4 constructor + */ + function WP_Widget( $id_base, $name, $widget_options = array(), $control_options = array() ) { + WP_Widget::__construct( $id_base, $name, $widget_options, $control_options ); + } + /** * Constructs name attributes for use in form() fields * @@ -152,15 +152,15 @@ class WP_Widget { } function _get_display_callback() { - return array(&$this, 'display_callback'); + return array($this, 'display_callback'); } function _get_update_callback() { - return array(&$this, 'update_callback'); + return array($this, 'update_callback'); } function _get_form_callback() { - return array(&$this, 'form_callback'); + return array($this, 'form_callback'); } /** Generate the actual widget content. @@ -317,7 +317,7 @@ class WP_Widget_Factory { var $widgets = array(); function WP_Widget_Factory() { - add_action( 'widgets_init', array( &$this, '_register_widgets' ), 100 ); + add_action( 'widgets_init', array( $this, '_register_widgets' ), 100 ); } function register($widget_class) { @@ -509,34 +509,45 @@ function register_sidebars($number = 1, $args = array()) { /** * Builds the definition for a single sidebar and returns the ID. * - * The $args parameter takes either a string or an array with 'name' and 'id' - * contained in either usage. It will be noted that the values will be applied - * to all sidebars, so if creating more than one, it will be advised to allow - * for WordPress to create the defaults for you. - * - * Example for string would be 'name=whatever;id=whatever1' and for - * the array it would be array( - * 'name' => 'whatever', - * 'id' => 'whatever1'). - * - * name - The name of the sidebar, which presumably the title which will be - * displayed. - * id - The unique identifier by which the sidebar will be called by. - * before_widget - The content that will prepended to the widgets when they are - * displayed. - * after_widget - The content that will be appended to the widgets when they are - * displayed. - * before_title - The content that will be prepended to the title when displayed. - * after_title - the content that will be appended to the title when displayed. - * - * Content is assumed to be HTML and should be formatted as such, but - * doesn't have to be. + * Accepts either a string or an array and then parses that against a set + * of default arguments for the new sidebar. WordPress will automatically + * generate a sidebar ID and name based on the current number of registered + * sidebars if those arguments are not included. + * + * When allowing for automatic generation of the name and ID parameters, keep + * in mind that the incrementor for your sidebar can change over time depending + * on what other plugins and themes are installed. + * + * If theme support for 'widgets' has not yet been added when this function is + * called, it will be automatically enabled through the use of add_theme_support() + * + * Arguments passed as a string should be separated by '&': + * + * e.g. 'name=Sidebar&id=my_prefix_sidebar' + * + * The same arguments passed as an array: + * + * array( + * 'name' => 'Sidebar', + * 'id' => 'my_prefix_sidebar', + * ) + * + * Arguments: + * name - The name or title of the sidebar displayed in the admin dashboard. + * id - The unique identifier by which the sidebar will be called. + * before_widget - HTML content that will be prepended to each widget's HTML output + * when assigned to this sidebar. + * after_widget - HTML content that will be appended to each widget's HTML output + * when assigned to this sidebar. + * before_title - HTML content that will be prepended to the sidebar title when displayed. + * after_title - HTML content that will be appended to the sidebar title when displayed. * * @since 2.2.0 * @uses $wp_registered_sidebars Stores the new sidebar in this array by sidebar ID. + * @uses add_theme_support() to ensure widget support has been added. * - * @param string|array $args Builds Sidebar based off of 'name' and 'id' values - * @return string The sidebar id that was added. + * @param string|array $args Arguments for the sidebar being registered. + * @return string Sidebar ID added to $wp_registered_sidebars global. */ function register_sidebar($args = array()) { global $wp_registered_sidebars; @@ -681,7 +692,6 @@ function wp_sidebar_description( $id ) { return esc_html( $wp_registered_sidebars[$id]['description'] ); } - /** * Remove widget from sidebar. * @@ -823,20 +833,13 @@ function wp_unregister_widget_control($id) { /** * Display dynamic sidebar. * - * By default it displays the default sidebar or 'sidebar-1'. The 'sidebar-1' is - * not named by the theme, the actual name is '1', but 'sidebar-' is added to - * the registered sidebars for the name. If you named your sidebar 'after-post', - * then the parameter $index will still be 'after-post', but the lookup will be - * for 'sidebar-after-post'. - * - * It is confusing for the $index parameter, but just know that it should just - * work. When you register the sidebar in the theme, you will use the same name - * for this function or "Pay no heed to the man behind the curtain." Just accept - * it as an oddity of WordPress sidebar register and display. + * By default this displays the default sidebar or 'sidebar-1'. If your theme specifies the 'id' or + * 'name' parameter for its registered sidebars you can pass an id or name as the $index parameter. + * Otherwise, you can pass in a numerical index to display the sidebar at that index. * * @since 2.2.0 * - * @param int|string $index Optional, default is 1. Name or ID of dynamic sidebar. + * @param int|string $index Optional, default is 1. Index, name or ID of dynamic sidebar. * @return bool True, if widget sidebar was found and called. False if not found or not called. */ function dynamic_sidebar($index = 1) { @@ -855,11 +858,9 @@ function dynamic_sidebar($index = 1) { } $sidebars_widgets = wp_get_sidebars_widgets(); - if ( empty( $sidebars_widgets ) ) - return false; - - if ( empty($wp_registered_sidebars[$index]) || !array_key_exists($index, $sidebars_widgets) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) ) + if ( empty( $wp_registered_sidebars[ $index ] ) || empty( $sidebars_widgets[ $index ] ) || ! is_array( $sidebars_widgets[ $index ] ) ) { return false; + } $sidebar = $wp_registered_sidebars[$index]; @@ -974,10 +975,8 @@ function is_dynamic_sidebar() { function is_active_sidebar( $index ) { $index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index); $sidebars_widgets = wp_get_sidebars_widgets(); - if ( !empty($sidebars_widgets[$index]) ) - return true; - - return false; + $is_active_sidebar = ! empty( $sidebars_widgets[$index] ); + return $is_active_sidebar; } /* Internal Functions */ @@ -998,7 +997,7 @@ function wp_get_sidebars_widgets($deprecated = true) { if ( $deprecated !== true ) _deprecated_argument( __FUNCTION__, '2.8.1' ); - global $wp_registered_widgets, $_wp_sidebars_widgets, $sidebars_widgets; + global $_wp_sidebars_widgets, $sidebars_widgets; // If loading from front page, consult $_wp_sidebars_widgets rather than options // to see if wp_convert_widget_settings() has made manipulations in memory. @@ -1149,7 +1148,7 @@ function _get_widget_id_base($id) { * Handle sidebars config after theme change * * @access private - * @since 3.3 + * @since 3.3.0 */ function _wp_sidebars_changed() { global $sidebars_widgets; @@ -1162,7 +1161,7 @@ function _wp_sidebars_changed() { // look for "lost" widgets, this has to run at least on each theme change function retrieve_widgets($theme_changed = false) { - global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets; + global $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets; $registered_sidebar_keys = array_keys( $wp_registered_sidebars ); $orphaned = 0;