is_admin_bar_disabled = isset( $abdc_options['disable_admin_bar'] ) ? $abdc_options['disable_admin_bar'] : ''; $this->is_dashboard_access_disabled = ! empty( $abdc_options['disable_dashboard_access'] ) ? $abdc_options['disable_dashboard_access'] : ''; $this->dashboard_redirect_url = ! empty( $abdc_options['dashboard_redirect_url'] ) ? $abdc_options['dashboard_redirect_url'] : home_url(); $this->disable_admin_bar_roles = ! empty( $abdc_options['disable_admin_bar_roles'] ) ? $abdc_options['disable_admin_bar_roles'] : array(); $this->disable_dashboard_access_roles = ! empty( $abdc_options['disable_dashboard_access_roles'] ) ? $abdc_options['disable_dashboard_access_roles'] : array(); add_filter( 'show_admin_bar', array( $this, 'admin_bar' ) ); add_filter( 'admin_init', array( $this, 'dashboard_access' ) ); } /** * Callback to disable admin bar. * * @return bool */ public function admin_bar() { $current_user = wp_get_current_user(); $current_user_roles = $current_user->roles; // bail if the disable admin bar checkbox isn't checked. if ( $this->is_admin_bar_disabled != 'yes' ) { return true; } // if user is admin, bail. if ( is_super_admin( $current_user->ID ) ) { return true; } else { // if no role is selected, disable for everyone by return false. if ( empty( $this->disable_admin_bar_roles ) ) { return false; } else { foreach ( $current_user_roles as $role ) { return in_array( $role, $this->disable_admin_bar_roles ) ? false : true; } } } } /** * Disable dashboard access. * * @return bool|void */ public function dashboard_access() { $current_user = wp_get_current_user(); $current_user_roles = $current_user->roles; // bail if disable dashboard access checkbox isn't checked. if ( $this->is_dashboard_access_disabled != 'yes' ) { return; } // if user is admin, bail. if ( is_super_admin( $current_user->ID ) ) { return; } else { // if no role is selected, disable for everyone by return false. if ( empty( $this->disable_dashboard_access_roles ) ) { $this->disable_dashboard_access(); } else { foreach ( $current_user_roles as $role ) { if ( in_array( $role, $this->disable_dashboard_access_roles ) ) { $this->disable_dashboard_access(); } } } } } /** * Call to disable dashboard access. */ public function disable_dashboard_access() { if ( is_admin() ) { wp_redirect( esc_url( $this->dashboard_redirect_url ) ); exit; } } public static function on_activation() { if ( ! current_user_can( 'activate_plugins' ) ) { return; } $data = array( 'disable_admin_bar' => 'yes', 'disable_dashboard_access' => 'yes', ); add_option( 'abdc_options', $data ); } public static function on_uninstall() { if ( ! current_user_can( 'activate_plugins' ) ) { return; } delete_option( 'abdc_options' ); } public static function get_instance() { if ( ! isset( self::$instance ) ) { self::$instance = new self; } return self::$instance; } }