185 lines
4.2 KiB
PHP
185 lines
4.2 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Init Admin Bar
|
||
|
*
|
||
|
* @package Ocean_Extra
|
||
|
* @category Core
|
||
|
* @author OceanWP
|
||
|
*/
|
||
|
|
||
|
// Exit if accessed directly
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
class Ocean_Admin_Bar {
|
||
|
|
||
|
public function __construct() {
|
||
|
if ( ! $this->has_access() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_css' ) );
|
||
|
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_css' ) );
|
||
|
add_action( 'admin_bar_menu', array( $this, 'register' ), 999 );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check current user has access to see admin bar menu
|
||
|
*/
|
||
|
public function has_access() {
|
||
|
$access = false;
|
||
|
|
||
|
if (
|
||
|
is_admin_bar_showing()
|
||
|
) {
|
||
|
$access = true;
|
||
|
}
|
||
|
|
||
|
return (bool) apply_filters( 'ocean_adminbarmenu_has_access', $access );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add "Ocean" item to new-content admin bar menu item
|
||
|
*/
|
||
|
public function admin_bar( $wp_admin_bar ) {
|
||
|
if ( ! is_admin_bar_showing() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$args = array(
|
||
|
'id' => 'ocean',
|
||
|
'title' => esc_html__( 'OceanWP', 'ocean-extra' ),
|
||
|
'href' => admin_url( 'admin.php?page=oceanwp' ),
|
||
|
'parent' => 'new-content',
|
||
|
);
|
||
|
|
||
|
$wp_admin_bar->add_node( $args );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Register and render admin bar menu items
|
||
|
*/
|
||
|
public function register( WP_Admin_Bar $wp_admin_bar ) {
|
||
|
$items = (array) apply_filters(
|
||
|
'ocean_admin_adminbarmenu_items',
|
||
|
array(
|
||
|
'main_menu',
|
||
|
'notification_menu',
|
||
|
'panel_menu',
|
||
|
'system_info_menu',
|
||
|
'community_menu',
|
||
|
'documentation_menu',
|
||
|
),
|
||
|
$wp_admin_bar
|
||
|
);
|
||
|
|
||
|
foreach ( $items as $item ) {
|
||
|
|
||
|
$this->{$item}( $wp_admin_bar );
|
||
|
|
||
|
do_action( "ocean_admin_adminbarmenu_init_{$item}_after", $wp_admin_bar );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Render primary top-level admin bar menu item
|
||
|
*/
|
||
|
public function main_menu( WP_Admin_Bar $wp_admin_bar ) {
|
||
|
$indicator = '';
|
||
|
$notifications = $this->has_notifications();
|
||
|
|
||
|
if ( $notifications ) {
|
||
|
$count = $notifications < 10 ? $notifications : '!';
|
||
|
$indicator = ' <div class="wp-core-ui wp-ui-notification ocean-menu-notification-counter">' . $count . '</div>';
|
||
|
}
|
||
|
|
||
|
$wp_admin_bar->add_menu(
|
||
|
array(
|
||
|
'id' => 'ocean-menu',
|
||
|
'title' => 'OceanWP' . $indicator,
|
||
|
'href' => admin_url( 'admin.php?page=oceanwp' ),
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function notification_menu( WP_Admin_Bar $wp_admin_bar ) {
|
||
|
if ( ! $this->has_notifications() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$wp_admin_bar->add_menu(
|
||
|
array(
|
||
|
'parent' => 'ocean-menu',
|
||
|
'id' => 'ocean-notifications',
|
||
|
'title' => esc_html__( 'Notifications', 'ocean-extra' ) . ' <div class="wp-core-ui wp-ui-notification ocean-menu-notification-indicator"></div>',
|
||
|
'href' => admin_url( 'admin.php?page=oceanwp' ),
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
public function panel_menu( WP_Admin_Bar $wp_admin_bar ) {
|
||
|
$wp_admin_bar->add_menu(
|
||
|
array(
|
||
|
'parent' => 'ocean-menu',
|
||
|
'id' => 'ocean-customizer',
|
||
|
'title' => esc_html__( 'Panel', 'oceanwp' ),
|
||
|
'href' => admin_url( 'admin.php?page=oceanwp#customizer' ),
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function system_info_menu( WP_Admin_Bar $wp_admin_bar ) {
|
||
|
$wp_admin_bar->add_menu(
|
||
|
array(
|
||
|
'parent' => 'ocean-menu',
|
||
|
'id' => 'ocean-system-info',
|
||
|
'title' => esc_html__( 'System Info', 'oceanwp' ),
|
||
|
'href' => admin_url( 'admin.php?page=oceanwp#system-info' ),
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function community_menu( WP_Admin_Bar $wp_admin_bar ) {
|
||
|
$wp_admin_bar->add_menu(
|
||
|
array(
|
||
|
'parent' => 'ocean-menu',
|
||
|
'id' => 'ocean-community',
|
||
|
'title' => esc_html__( 'Community', 'oceanwp' ),
|
||
|
'href' => 'https://www.facebook.com/groups/oceanwptheme/',
|
||
|
'meta' => array( 'target' => '_blank' )
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function documentation_menu( WP_Admin_Bar $wp_admin_bar ) {
|
||
|
$wp_admin_bar->add_menu(
|
||
|
array(
|
||
|
'parent' => 'ocean-menu',
|
||
|
'id' => 'ocean-documentation',
|
||
|
'title' => esc_html__( 'Documentation', 'oceanwp' ),
|
||
|
'href' => 'https://docs.oceanwp.org/',
|
||
|
'meta' => array( 'target' => '_blank' )
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Determine whether new notifications are available
|
||
|
*/
|
||
|
public function has_notifications() {
|
||
|
return ocean_notifications()->get_count();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enqueue styles
|
||
|
*/
|
||
|
public function enqueue_css() {
|
||
|
wp_enqueue_style( 'ocean-admin-bar', plugins_url( '/assets/css/admin-bar.css', __FILE__ ), false, OCEANWP_THEME_VERSION );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
new Ocean_Admin_Bar();
|