1 ) { if ( !strstr($name, '%d') ) $name = "$name %d"; $args['name'] = sprintf($name, $i); } register_sidebar($args); ++$i; } } function register_sidebar($args = array()) { global $registered_sidebars; if ( is_string($args) ) parse_str($args, $args); $defaults = array( 'name' => sprintf(__('Sidebar %d', 'widgets'), count($registered_sidebars) + 1 ), 'before_widget' => '
  • ', 'after_widget' => "
  • \n", 'before_title' => '

    ', 'after_title' => "

    \n", ); $sidebar = array_merge($defaults, $args); $sidebar['id'] = sanitize_title($sidebar['name']); $registered_sidebars[$sidebar['id']] = $sidebar; return $sidebar['id']; } function unregister_sidebar($name) { global $registered_sidebars; unset( $registered_sidebars[$name]['id'] ); } function register_sidebar_widget($name, $output_callback, $classname = '') { global $registered_widgets, $register_widget_defaults; if ( is_array($name) ) { $id = sanitize_title(sprintf($name[0], $name[2])); $name = sprintf(__($name[0], $name[1]), $name[2]); } else { $id = sanitize_title($name); $name = __($name); } if ( (empty($classname) || !is_string($classname)) && is_string($output_callback) ) $classname = $output_callback; $widget = array( 'id' => $id, 'callback' => $output_callback, 'classname' => $classname, 'params' => array_slice(func_get_args(), 2) ); if ( empty($output_callback) ) unset($registered_widgets[$name]); elseif ( is_callable($output_callback) && ( !isset($registered_widgets[$name]) || !$register_widget_defaults) ) $registered_widgets[$name] = $widget; } function unregister_sidebar_widget($name) { register_sidebar_widget($name, ''); unregister_widget_control($name); } function register_widget_control($name, $control_callback, $width = 300, $height = 200) { global $registered_widget_controls, $register_widget_defaults; if ( is_array($name) ) { $id = sanitize_title(sprintf($name[0], $name[2])); $name = sprintf(__($name[0], $name[1]), $name[2]); } else { $id = sanitize_title($name); $name = __($name); } $width = (int) $width > 90 ? (int) $width + 60 : 360; $height = (int) $height > 60 ? (int) $height + 40 : 240; if ( empty($control_callback) ) unset($registered_widget_controls[$name]); elseif ( !isset($registered_widget_controls[$name]) || !$register_widget_defaults ) $registered_widget_controls[$name] = array( 'id' => $id, 'callback' => $control_callback, 'width' => $width, 'height' => $height, 'params' => array_slice(func_get_args(), 4) ); } function unregister_widget_control($name) { return register_widget_control($name, ''); } function dynamic_sidebar($name = 1) { global $registered_sidebars, $registered_widgets; if ( is_int($name) ) { $index = sanitize_title('Sidebar ' . $name); $name = sprintf(__('Sidebar %d', 'widgets'), $name); } else { $index = sanitize_title($name); } $sidebars_widgets = get_option('sidebars_widgets'); $sidebar = $registered_sidebars[$index]; if ( empty($sidebar) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) ) return false; $did_one = false; foreach ( $sidebars_widgets[$index] as $name ) { $callback = $registered_widgets[$name]['callback']; $params = array_merge(array($sidebar), (array) $registered_widgets[$name]['params']); $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $registered_widgets[$name]['id'], $registered_widgets[$name]['classname']); if ( is_callable($callback) ) { call_user_func_array($callback, $params); $did_one = true; } } return $did_one; } function is_active_widget($callback) { global $registered_widgets; $sidebars_widgets = get_option('sidebars_widgets'); if ( is_array($sidebars_widgets) ) foreach ( $sidebars_widgets as $sidebar => $widgets ) if ( is_array($widgets) ) foreach ( $widgets as $widget ) if ( $registered_widgets[$widget]['callback'] == $callback ) return true; return false; } function is_dynamic_sidebar() { global $registered_widgets, $registered_sidebars; $sidebars_widgets = get_option('sidebars_widgets'); foreach ( $registered_sidebars as $index => $sidebar ) { if ( count($sidebars_widgets[$index]) ) { foreach ( $sidebars_widgets[$index] as $widget ) if ( array_key_exists($widget, $registered_widgets) ) return true; } } return false; } //////////////////////////////////////////////////////////// Private Functions function sidebar_admin_setup() { global $registered_sidebars; if ( count($registered_sidebars) < 1 ) return; $page = preg_replace('!^.*[\\\\/]wp-content[\\\\/][^\\\\/]*plugins[\\\\/]!', '', __FILE__); $page = str_replace('\\', '/', $page); add_submenu_page('themes.php', __('Sidebar Widgets', 'widgets'), __('Sidebar Widgets', 'widgets'), 5, $page, 'sidebar_admin_page'); if ( $_GET['page'] == $page ) { if ( !file_exists( ABSPATH . WPINC . '/js/wp-scriptaculous.js' ) ) { wp_deregister_script( 'scriptaculous-root' ); wp_register_script( 'scriptaculous-root', '/wp-includes/js/scriptaculous/scriptaculous.js', array('prototype'), '1.6.1' ); } wp_enqueue_script( 'scriptaculous-effects' ); wp_enqueue_script( 'scriptaculous-dragdrop' ); add_action('admin_head', 'sidebar_admin_head'); do_action('sidebar_admin_setup'); } } function sidebar_admin_head() { global $registered_widgets, $registered_sidebars, $registered_widget_controls; $width = 1 + 262 * ( count($registered_sidebars)); $height = 35 * count($registered_widgets); ?>

    Get it ready!"); ?>

    $sidebar ) { $postindex = $index . 'order'; parse_str($_POST[$postindex], $order); $new_order = $order[$index]; if ( is_array($new_order) ) foreach ( $new_order as $sanitized_name ) foreach ( $registered_widgets as $name => $widget ) if ( $sanitized_name == $widget['id'] ) $sidebars_widgets[$index][] = $name; } update_option('sidebars_widgets', $sidebars_widgets); break; } } ksort($registered_widgets); $inactive_widgets = array(); foreach ( $registered_widgets as $name => $widget ) { $is_active = false; foreach ( $registered_sidebars as $index => $sidebar ) { if ( is_array($sidebars_widgets[$index]) && in_array($name, $sidebars_widgets[$index]) ) { $is_active = true; break; } } if ( ! $is_active ) $inactive_widgets[] = $name; } $containers = array('palette'); foreach ( $registered_sidebars as $index => $sidebar ) $containers[] = $index; $c_string = ''; foreach ( $containers as $container ) $c_string .= "\"$container\","; $c_string = substr($c_string, 0, -1); ?>

    View site »'), get_settings('home') . '/'); ?>

    $sidebar ) : ?>


    $widget ) : ?>

    ≡" : ''; echo "
  • $name$popper
  • "; } function get_widget_defaults() { global $registered_sidebars; foreach ( $registered_sidebars as $index => $sidebar ) $defaults[$index] = array(); return $defaults; } //////////////////////////////////////////////////////////// Standard Widgets function widget_pages($args) { extract($args); $options = get_option('widget_pages'); $title = empty($options['title']) ? __('Pages') : $options['title']; echo $before_widget . $before_title . $title . $after_title . "\n" . $after_widget; } function widget_pages_control() { $options = $newoptions = get_option('widget_pages'); if ( $_POST["pages-submit"] ) { $newoptions['title'] = strip_tags(stripslashes($_POST["pages-title"])); } if ( $options != $newoptions ) { $options = $newoptions; update_option('widget_pages', $options); } $title = htmlspecialchars($options['title'], ENT_QUOTES); ?>

    $before_title, 'title_after'=>$after_title)); } } function widget_search($args) { extract($args); ?>

    '; get_calendar(); echo ''; echo $after_widget; } function widget_calendar_control() { $options = $newoptions = get_option('widget_calendar'); if ( $_POST["calendar-submit"] ) { $newoptions['title'] = strip_tags(stripslashes($_POST["calendar-title"])); } if ( $options != $newoptions ) { $options = $newoptions; update_option('widget_calendar', $options); } $title = htmlspecialchars($options['title'], ENT_QUOTES); ?>

    " name="text-title-" type="text" value="" /> " name="text-submit-" value="1" /> 9 ) $number = 9; if ( $number < 1 ) $number = 1; $newoptions['number'] = $number; } if ( $options != $newoptions ) { $options = $newoptions; update_option('widget_text', $options); widget_text_register($options['number']); } } function widget_text_page() { $options = $newoptions = get_option('widget_text'); ?>

    9 ) $number = 9; for ($i = 1; $i <= 9; $i++) { $name = array('Text %s', 'widgets', $i); register_sidebar_widget($name, $i <= $number ? 'widget_text' : /* unregister */ '', $i); register_widget_control($name, $i <= $number ? 'widget_text_control' : /* unregister */ '', 460, 350, $i); } add_action('sidebar_admin_setup', 'widget_text_setup'); add_action('sidebar_admin_page', 'widget_text_page'); } function widget_categories($args) { extract($args); $options = get_option('widget_categories'); $c = $options['count'] ? '1' : '0'; $h = $options['hierarchical'] ? '1' : '0'; $title = empty($options['title']) ? __('Categories') : $options['title']; ?>

    have_posts()) : ?> get_results("SELECT comment_author, comment_author_url, comment_ID, comment_post_ID FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 5"); ?>

    10 ) $num_items = 10; $url = $options[$number]['url']; if ( empty($url) ) return; while ( strstr($url, 'http') != $url ) $url = substr($url, 1); $rss = fetch_rss($url); $link = wp_specialchars(strip_tags($rss->channel['link']), 1); while ( strstr($link, 'http') != $link ) $link = substr($link, 1); $desc = wp_specialchars(strip_tags(html_entity_decode($rss->channel['description'], ENT_QUOTES)), 1); $title = $options[$number]['title']; if ( empty($title) ) $title = htmlentities(strip_tags($rss->channel['title'])); if ( empty($title) ) $title = $desc; if ( empty($title) ) $title = __('Unknown Feed', 'widgets'); $url = wp_specialchars(strip_tags($url), 1); if ( file_exists(dirname(__FILE__) . '/rss.png') ) $icon = str_replace(ABSPATH, get_settings('siteurl').'/', dirname(__FILE__)) . '/rss.png'; else $icon = get_settings('siteurl').'/wp-includes/images/rss.png'; $title = "RSS $title"; ?>

    " name="rss-url-" type="text" value="" />

    " name="rss-title-" type="text" value="" />

    " name="rss-submit-" value="1" /> 9 ) $number = 9; if ( $number < 1 ) $number = 1; $newoptions['number'] = $number; } if ( $options != $newoptions ) { $options = $newoptions; update_option('widget_rss', $options); widget_rss_register($options['number']); } } function widget_rss_page() { $options = $newoptions = get_option('widget_rss'); ?>

    9 ) $number = 9; for ($i = 1; $i <= 9; $i++) { $name = array('RSS %s', 'widgets', $i); register_sidebar_widget($name, $i <= $number ? 'widget_rss' : /* unregister */ '', $i); register_widget_control($name, $i <= $number ? 'widget_rss_control' : /* unregister */ '', 410, 200, $i); } add_action('sidebar_admin_setup', 'widget_rss_setup'); add_action('sidebar_admin_page', 'widget_rss_page'); if ( is_active_widget('widget_rss') ) add_action('wp_head', 'widget_rss_head'); } function widget_rss_head() { ?>