. */ class sidebar_generator { public function sidebar_generator(){ add_action('init',array('sidebar_generator','init')); add_action('admin_menu',array('sidebar_generator','admin_menu')); add_action('admin_enqueue_scripts', array('sidebar_generator','admin_enqueue_scripts')); add_action('admin_print_scripts', array('sidebar_generator','admin_print_scripts')); add_action('wp_ajax_add_sidebar', array('sidebar_generator','add_sidebar') ); add_action('wp_ajax_remove_sidebar', array('sidebar_generator','remove_sidebar') ); //edit posts/pages add_action('edit_form_advanced', array('sidebar_generator', 'edit_form')); add_action('edit_page_form', array('sidebar_generator', 'edit_form')); //save posts/pages add_action('edit_post', array('sidebar_generator', 'save_form')); add_action('publish_post', array('sidebar_generator', 'save_form')); add_action('save_post', array('sidebar_generator', 'save_form')); add_action('edit_page_form', array('sidebar_generator', 'save_form')); } public static function init(){ //go through each sidebar and register it $sidebars = sidebar_generator::get_sidebars(); if(is_array($sidebars)){ foreach($sidebars as $sidebar){ $sidebar_class = sidebar_generator::name_to_class($sidebar); register_sidebar(array( 'name'=>$sidebar, 'id' => 'avada-custom-sidebar-'.strtolower($sidebar_class), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', )); } } } public static function admin_enqueue_scripts() { wp_enqueue_script( array( 'sack' )); } public static function admin_print_scripts(){ ?> Remove]'); //cellLeft.appendChild(textNode) var cellLeft = row.insertCell(2); removeLink = document.createElement('a'); linkText = document.createTextNode('remove'); removeLink.setAttribute('onclick', 'remove_sidebar_link(\'$name\')'); removeLink.setAttribute('href', 'javascript:void(0)'); removeLink.appendChild(linkText); cellLeft.appendChild(removeLink); "; die( "$js"); } public static function remove_sidebar(){ $sidebars = sidebar_generator::get_sidebars(); $name = str_replace(array("\n","\r","\t"),'',$_POST['sidebar_name']); $id = sidebar_generator::name_to_class($name); if(!isset($sidebars[$id])){ die("alert('Sidebar does not exist.')"); } $row_number = $_POST['row_number']; unset($sidebars[$id]); sidebar_generator::update_sidebars($sidebars); $js = " var tbl = document.getElementById('sbg_table'); tbl.deleteRow($row_number) "; die($js); } public static function admin_menu(){ add_theme_page('Sidebars', 'Sidebars', 'manage_options', 'multiple_sidebars', array('sidebar_generator','admin_page')); } public static function admin_page(){ ?>

Sidebars


Sidebar Name CSS class Remove
remove
No Sidebars defined


+ Add New Sidebar
ID; } $selected_sidebar = get_post_meta($post_id, 'sbg_selected_sidebar', true); if(!is_array($selected_sidebar)){ $tmp = $selected_sidebar; $selected_sidebar = array(); $selected_sidebar[0] = $tmp; } $selected_sidebar_replacement = get_post_meta($post_id, 'sbg_selected_sidebar_replacement', true); if(!is_array($selected_sidebar_replacement)){ $tmp = $selected_sidebar_replacement; $selected_sidebar_replacement = array(); $selected_sidebar_replacement[0] = $tmp; } ?>

Sidebar

Please select the sidebar you would like to display on this page. Note: You must first create the sidebar under Appearance > Sidebars.

get_queried_object(); $selected_sidebar = get_post_meta($post->ID, 'sbg_selected_sidebar', true); $selected_sidebar_replacement = get_post_meta($post->ID, 'sbg_selected_sidebar_replacement', true); $did_sidebar = false; //this page uses a generated sidebar if($selected_sidebar != '' && $selected_sidebar != "0"){ if(is_array($selected_sidebar) && !empty($selected_sidebar)){ for($i=0;$i"; dynamic_sidebar('avada-blog-sidebar');//default behavior $did_sidebar = true; break; }elseif($name == "0" && $selected_sidebar[$i] == "0"){ //we are replacing the default sidebar with something //echo "\n\n"; dynamic_sidebar($selected_sidebar_replacement[$i]);//default behavior $did_sidebar = true; break; }elseif($selected_sidebar[$i] == $name){ //we are replacing this $name //echo "\n\n"; $did_sidebar = true; dynamic_sidebar($selected_sidebar_replacement[$i]);//default behavior break; } //echo "\n"; } } if($did_sidebar == true){ echo ""; return; } //go through without finding any replacements, lets just send them what they asked for if($name != "0"){ dynamic_sidebar($name); }else{ dynamic_sidebar('avada-blog-sidebar'); } echo ""; return; }else{ if($name != "0"){ dynamic_sidebar($name); }else{ dynamic_sidebar('avada-blog-sidebar'); } } } /** * replaces array of sidebar names */ public static function update_sidebars($sidebar_array){ $sidebars = update_option('sbg_sidebars',$sidebar_array); } /** * gets the generated sidebars */ public static function get_sidebars(){ $sidebars = get_option('sbg_sidebars'); return $sidebars; } public static function name_to_class($name){ $class = str_replace(array(' ',',','.','"',"'",'/',"\\",'+','=',')','(','*','&','^','%','$','#','@','!','~','`','<','>','?','[',']','{','}','|',':',),'',$name); return $class; } } $sbg = new sidebar_generator; function generated_dynamic_sidebar($name='0'){ sidebar_generator::get_sidebar($name); return true; } ?>