collect_sidebars(); add_action( 'widgets_init', array( $this, 'set_sidebars' ) ); add_action( 'widgets_init', array( $this, 'initiate_widgets' ) ); add_filter( 'sidebars_widgets', array( $this, 'remove_specific_widget' ) ); } /** * Filter widgets, we don`t allow normal widgets in the homepage builder * * @param $sidebars_widgets * * @return mixed */ public function remove_specific_widget( $sidebars_widgets ) { $filtering = apply_filters( 'bumbeelbee_widget_filtering', true ); if ( ! $filtering ) { return $sidebars_widgets; } /** * Start filtering the widgets */ foreach ( $sidebars_widgets as $widget_area => $widget_list ) { /** * On the homepage-slider sidebar, we don't allow more any other sidebar, except the bumbeelbee_slider_widget */ if ( $widget_area === 'homepage-slider' && ! empty( $widget_list ) ) { foreach ( $widget_list as $pos => $widget_id ) { if ( strpos( $widget_id, 'bumbeelbee_slider_widget' ) === false ) { unset( $sidebars_widgets[ $widget_area ][ $pos ] );; } } /** * And there can be only one #highlander */ if ( count( $sidebars_widgets[ $widget_area ] ) > 1 ) { $sidebars_widgets[ $widget_area ] = array_slice( $sidebars_widgets[ $widget_area ], 0, 1 ); } } /** * In the content area of the frontend page, we can only use builder widgets */ if ( $widget_area === 'content-area' && ! empty( $widget_list ) ) { foreach ( $widget_list as $pos => $widget_id ) { if ( strpos( $widget_id, 'bumbeelbee_widget_posts_' ) === false ) { /** * Special case, banner widget */ if ( strpos( $widget_id, 'bumbeelbee_banner' ) !== false ) { continue; } unset( $sidebars_widgets[ $widget_area ][ $pos ] ); } } } /** * Footer sidebars */ if ( in_array( $widget_area, array( 'footer-1', 'footer-2', 'footer-3', 'footer-4', 'sidebar' ) ) && ! empty( $widget_list ) ) { foreach ( $widget_list as $pos => $widget_id ) { if ( strpos( $widget_id, 'bumbeelbee_' ) !== false ) { unset( $sidebars_widgets[ $widget_area ][ $pos ] );; } } } } return $sidebars_widgets; } /** * registers sidebars */ public function set_sidebars() { foreach ( $this->sidebars as $sidebar ) { register_sidebar( $sidebar ); } } /** * Add sidebars here */ private function collect_sidebars() { $this->sidebars = array( array( 'id' => 'sidebar', 'name' => __( 'Blog Sidebar', 'bumbeelbee' ), 'description' => __( 'This is the blog sidebar. If you\'ve set a posts page under Settings -> Reading, that\'s where your sidebar will be showing up', 'bumbeelbee' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ), array( 'id' => 'homepage-slider', 'name' => __( 'Homepage - Header area', 'bumbeelbee' ), 'description' => __( 'This sidebar holds the header sidebar area on the homepage.', 'bumbeelbee' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ), array( 'id' => 'content-area', 'name' => __( 'Homepage - Content area', 'bumbeelbee' ), 'description' => __( 'The sidebar holds the entire homepage content, place "bumbeelbee - Homepage builder" widgets here, please consider the column arrangement.', 'bumbeelbee' ), 'before_title' => '

', 'after_title' => '

', 'before_widget' => '
', 'after_widget' => '
' ), array( 'id' => 'footer-1', 'name' => __( 'Footer 1', 'bumbeelbee' ), 'description' => __( 'This is your footer sidebar. By default, we\'ve defined a maximum of 4 sidebars but if you want to use less make sure you change the settings in: Footer -> Footer columns.', 'bumbeelbee' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ), array( 'id' => 'footer-2', 'name' => __( 'Footer 2', 'bumbeelbee' ), 'description' => __( 'This is your footer sidebar. By default, we\'ve defined a maximum of 4 sidebars but if you want to use less make sure you change the settings in: Footer -> Footer columns.', 'bumbeelbee' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ), array( 'id' => 'footer-3', 'name' => __( 'Footer 3', 'bumbeelbee' ), 'description' => __( 'This is your footer sidebar. By default, we\'ve defined a maximum of 4 sidebars but if you want to use less make sure you change the settings in: Footer -> Footer columns.', 'bumbeelbee' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ), array( 'id' => 'footer-4', 'name' => __( 'Footer 4', 'bumbeelbee' ), 'description' => __( 'This is your footer sidebar. By default, we\'ve defined a maximum of 4 sidebars but if you want to use less make sure you change the settings in: Footer -> Footer columns.', 'bumbeelbee' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ), ); } /** * Initiate widgets */ public function initiate_widgets() { $widgets = array( 'Widget_bumbeelbee_Homepage_Slider', 'Widget_bumbeelbee_Posts_blog', 'Widget_bumbeelbee_Posts_Service', 'Widget_bumbeelbee_Posts_Parallax', 'Widget_bumbeelbee_Posts_About', 'Widget_bumbeelbee_Posts_Subscribe', 'Widget_bumbeelbee_Posts_Project', 'Widget_bumbeelbee_Posts_Testimonials', 'Widget_bumbeelbee_Posts_Partner', 'Widget_bumbeelbee_Posts_Contact', 'Widget_bumbeelbee_Posts_Map' ); foreach ( $widgets as $widget ) { new $widget(); register_widget( $widget ); } } }