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' => '',
'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' => '',
),
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' => '',
),
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' => '',
),
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' => '',
),
);
}
/**
* 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 );
}
}
}