1 ) { if ( !strstr($name, '%d') ) $name = "$name %d"; $args['name'] = sprintf($name, $i); } register_sidebar($args); ++$i; } } /** *@desc register a single sidebar by reading his settigs from the functions.php of the template * of no settings are found take the default settings */ function register_sidebar($args = array()) { global $registered_sidebars; if ( is_string($args) ) parse_str($args, $args); $defaults = array( 'name' => sprintf(__('Sidebar %d'), count($registered_sidebars) + 1 ), 'before_widget' => '
  • ', 'after_widget' => "
  • \n", 'before_title' => '

    ', 'after_title' => "

    \n", ); $sidebar = array_merge($defaults, $args); $index = sanitize_title($sidebar['name']); $registered_sidebars[$index] = $sidebar; return $index; } /** *@desc remove a sidebar from the registered sidebars array */ function unregister_sidebar($name) { global $registered_sidebars; $index = sanitize_title($name); unset( $registered_sidebars[$index] ); } /** *@desc register a single widget */ function register_sidebar_widget($name, $output_callback, $classname = '') { global $registered_widgets; 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) ) { $registered_widgets[$name] = $widget; } } /** *@desc remove a sidebar widget */ function unregister_sidebar_widget($name) { return register_sidebar_widget($name, ''); } /** * @desc register the widget controll popup * @param string $name - widget name * @param string $control_callback - the function to call after saving the widgte * @param string $width - DEPRECEATED but left in for compatibility issues * @param string $height - DEPRECEATED but left in for compatibility issues */ function register_widget_control($name, $control_callback, $width = 300, $height = 200) { global $registered_widget_controls; 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]); } else { $registered_widget_controls[$name] = array( 'callback' => $control_callback, // 'width' => $width, not needed anymore // 'height' => $height, 'params' => array_slice(func_get_args(), 4) ); } } function unregister_widget_control($name) { return register_widget_control($name, ''); } /** *@desc get the sidebars */ function dynamic_sidebar($name = 1) { global $registered_sidebars, $registered_widgets; if ( is_int($name) ) { $name = "Sidebar $name"; } $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), $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; } /** *@desc check if the widget is active */ 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; } /**** Private Functions *****/ /** *@desc prepare the admin menu link for adminpage */ function sidebar_admin_setup() { global $registered_sidebars; if ( count($registered_sidebars) < 1 ) {# no sidebars defined .. no menu link return; } $page = preg_replace('!^.*/wp-content/[^/]*plugins/!', '', __FILE__); add_submenu_page('themes.php', 'Sidebar Widgets', 'Sidebar Widgets', 5, $page, 'sidebar_admin_page'); if ( $_GET['page'] == $page ) { add_action('admin_head', 'sidebar_admin_head'); do_action('sidebar_admin_setup'); } } /** *@desc add css includes and stuff to header */ function sidebar_admin_head() { global $registered_widgets, $registered_sidebars, $registered_widget_controls; $width = 1 + 262 * ( 1 + count($registered_sidebars)); ?>

    Get it ready!"); ?>

    $val ) { foreach ( $val as $key1 => $val1 ) { foreach ( $registered_widgets as $key2 => $val2 ) { if ( $val1 == $val2['id'] ) { $sidebars_widgets[$key][] = $key2; } } } } update_option('sidebars_widgets', $sidebars_widgets); } break; } } ksort($registered_widgets); $inactive_widgets = array(); foreach ( $registered_widgets as $name => $callback ) { $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; } ?>

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

    $control ) : ?> $sidebar ) : ?>

    edit': ''; if(!empty($registered_widgets[$name]['params'])) { $number = $registered_widgets[$name]['params'][0]; # get the widget number $options = get_option($registered_widgets[$name]['classname']); # get the widget options $widgettitle= $options[$number]['title'] ; #get the widget title with numbering } else { #no widget numbering $options =get_option($registered_widgets[$name]['classname']); $widgettitle=$options['title'] ; } if(!empty($widgettitle)) {#show only if title is populated $show_title= '( '.$widgettitle.' )'; } echo "
  • $name $show_title $popper
  • \n"; } function get_widget_defaults() { global $registered_sidebars; foreach ( $registered_sidebars as $index => $sidebar ) { $defaults[$index] = array(); } return $defaults; } add_action('admin_menu', 'sidebar_admin_setup'); ?>