Make WordPress Core

Ticket #11160: 11160-2.patch

File 11160-2.patch, 5.1 KB (added by azaozz, 17 years ago)
  • wp-includes/widgets.php

     
    381381/**
    382382 * Private
    383383 */
    384  $_wp_deprecated_widgets_callbacks = array(
    385         'wp_widget_pages',
     384$_wp_deprecated_widgets_callbacks = array(
     385        'wp_widget_pages',
    386386        'wp_widget_pages_control',
    387387        'wp_widget_calendar',
    388388        'wp_widget_calendar_control',
    … …  
    404404        'wp_widget_rss_control',
    405405        'wp_widget_recent_comments',
    406406        'wp_widget_recent_comments_control'
    407  );
     407);
    408408
    409409/* Template tags & API functions */
    410410
    … …  
    448448}
    449449
    450450/**
     451 * Return the registered ID of a sidebar given it's name or registration ID.
     452 *
     453 * Since register_sidebar() supports it, this function will look for sidebars
     454 * named as integers or as a default id (like 2 or 'sidebar-13') first and check
     455 * those as IDs if the name fails (and those IDs exist).
     456 * ie: $id = wp_get_sidebar_id(1);
     457 *     $id = wp_get_sidebar_id('Sidebar Top');
     458 *
     459 * wp_get_sidebar_id() will also take an array of arguments. The array should have
     460 * keys 'name', 'id' or both: $id = wp_get_sidebar_id( array('id' => 'sidebar-1') );
     461 *
     462 * @since 2.9.0
     463 *
     464 * @param int|string|array $args The name or id of the sidebar as registered with
     465 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax.
     466 *
     467 * @return mixed returns false if id not found or returns sidebar id.
     468 */
     469function wp_get_sidebar_id($args) {
     470        global $wp_registered_sidebars;
     471
     472         if ( is_array($args) ) {
     473                // $args is an array holding a name, an id or both.
     474                if ( !empty($args['id']) )
     475                        $args = $args['id'];
     476                elseif ( !empty($args['name']) )
     477                        $args = $args['name'];
     478                else
     479                        return false;
     480        }
     481
     482        if ( is_int($args) ) {
     483                return "sidebar-$args";
     484        } elseif ( is_string($args) ) {
     485                $name = sanitize_title($args);
     486
     487                foreach ( (array) $wp_registered_sidebars as $id => $value ) {
     488                        if ( sanitize_title($value['name']) == $name || $id == $name )
     489                                return $id;
     490                }
     491        }
     492
     493        return false;
     494}
     495
     496
     497/**
    451498 * Creates multiple sidebars.
    452499 *
    453500 * If you wanted to quickly create multiple sidebars for a theme or internally.
    … …  
    565612 *
    566613 * @uses $wp_registered_sidebars Stores the new sidebar in this array by sidebar ID.
    567614 *
    568  * @param string $name The ID of the sidebar when it was added.
     615 * @param int|string|array $name The name or id of the sidebar as registered with
     616 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax
     617 * including keys 'name', 'id' or both.
    569618 */
    570 function unregister_sidebar( $name ) {
     619function unregister_sidebar($name) {
    571620        global $wp_registered_sidebars;
     621        $name = wp_get_sidebar_id($name);
    572622
    573623        if ( isset( $wp_registered_sidebars[$name] ) )
    574624                unset( $wp_registered_sidebars[$name] );
    … …  
    825875 *
    826876 * @since 2.2.0
    827877 *
    828  * @param int|string $index Optional, default is 1. Name or ID of dynamic sidebar.
     878 * @param int|string|array $args Optional, default is 1. The name or id of the wigdet
     879 * specified by register_sidebar(s) functions. As an array use the register_sidebar()
     880 * syntax identifying sidebar by name or id or both.
    829881 * @return bool True, if widget sidebar was found and called. False if not found or not called.
    830882 */
    831 function dynamic_sidebar($index = 1) {
     883function dynamic_sidebar($name = 1) {
    832884        global $wp_registered_sidebars, $wp_registered_widgets;
    833885
    834         if ( is_int($index) ) {
    835                 $index = "sidebar-$index";
    836         } else {
    837                 $index = sanitize_title($index);
    838                 foreach ( (array) $wp_registered_sidebars as $key => $value ) {
    839                         if ( sanitize_title($value['name']) == $index ) {
    840                                 $index = $key;
    841                                 break;
    842                         }
    843                 }
    844         }
     886        $name = wp_get_sidebar_id($name);
    845887
    846888        $sidebars_widgets = wp_get_sidebars_widgets();
    847889
    848         if ( empty($wp_registered_sidebars[$index]) || !array_key_exists($index, $sidebars_widgets) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) )
     890        if ( empty($wp_registered_sidebars[$name]) || !array_key_exists($name, $sidebars_widgets) || !is_array($sidebars_widgets[$name]) || empty($sidebars_widgets[$name]) )
    849891                return false;
    850892
    851         $sidebar = $wp_registered_sidebars[$index];
     893        $sidebar = $wp_registered_sidebars[$name];
    852894
    853895        $did_one = false;
    854         foreach ( (array) $sidebars_widgets[$index] as $id ) {
     896        foreach ( (array) $sidebars_widgets[$name] as $id ) {
    855897
    856898                if ( !isset($wp_registered_widgets[$id]) ) continue;
    857899
    … …  
    953995 *
    954996 * @since 2.8
    955997 *
    956  * @param mixed $index, sidebar name, id or number to check.
     998 * @param int|string|array $name The name or id of the sidebar as registered with
     999 * register_sidebar(s) functions. If an array, use the register_sidebar() syntax
     1000 * including keys 'name' or 'id' or both.
     1001 *
    9571002 * @return bool true if the sidebar is in use, false otherwise.
    9581003 */
    959 function is_active_sidebar( $index ) {
    960         $index = ( is_int($index) ) ? "sidebar-$index" : sanitize_title($index);
     1004function is_active_sidebar($name) {
     1005        $name = wp_get_sidebar_id($name);
    9611006        $sidebars_widgets = wp_get_sidebars_widgets();
    962         if ( isset($sidebars_widgets[$index]) && !empty($sidebars_widgets[$index]) )
    963                 return true;
    964 
    965         return false;
     1007       
     1008        return !empty($sidebars_widgets[$name]);
    9661009}
    9671010
    9681011/* Internal Functions */