.
*/
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 |
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;
}
?>
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;
}
?>