$id, 'title' => esc_html( $title ), ); if ( $href ) { // Accept either relative admin paths or absolute URLs. if ( preg_match( '#^https?://#i', $href ) ) { $args['href'] = esc_url( $href ); } else { $args['href'] = qmen_admin_href( $href ); } $args['meta'] = array( 'target' => $target ); } if ( $parent ) { $args['parent'] = $parent; } $admin_bar->add_node( $args ); }; // Root. $add( 'qmen-root', 'AdminFly' ); // Recent History branch. if ( in_array( 'recent', $enabled, true ) ) { $add( 'qmen-recent', __( 'Recent', 'adminfly-fast-navigator' ), null, 'qmen-root' ); $history = qmen_get_history_items( get_current_user_id() ); if ( empty( $history ) ) { $add( 'qmen-recent-placeholder', __( 'No recent items', 'adminfly-fast-navigator' ), '#', 'qmen-recent' ); } else { foreach ( $history as $idx => $item ) { $add( 'qmen-recent-' . $idx, $item->title, $item->url, 'qmen-recent' ); } } } // WooCommerce branch (only if enabled and WooCommerce is active). if ( in_array( 'wc', $enabled, true ) && $wc_active ) { qmen_add_wc_menu( $admin_bar, $add ); } // Products branch (enabled + WC active). if ( in_array( 'products', $enabled, true ) && $wc_active ) { qmen_add_products_menu( $admin_bar, $add ); } // Orders branch (enabled + WC active). if ( in_array( 'orders', $enabled, true ) && $wc_active ) { qmen_add_orders_menu( $admin_bar, $add ); } // Plugins branch. if ( in_array( 'plugins', $enabled, true ) ) { qmen_add_plugins_menu( $admin_bar, $add ); } // Themes branch. if ( in_array( 'themes', $enabled, true ) ) { qmen_add_themes_menu( $admin_bar, $add ); } // Posts branch. if ( in_array( 'posts', $enabled, true ) ) { qmen_add_posts_menu( $admin_bar, $add ); } // Pages branch. if ( in_array( 'pages', $enabled, true ) ) { qmen_add_pages_menu( $admin_bar, $add ); } // Users branch. if ( current_user_can( 'list_users' ) && in_array( 'users', $enabled, true ) ) { qmen_add_users_menu( $admin_bar, $add ); } // WP Settings branch. if ( current_user_can( 'manage_options' ) && in_array( 'settings', $enabled, true ) ) { qmen_add_settings_menu( $admin_bar, $add ); } // Scanned Plugin Links branch. if ( current_user_can( 'manage_options' ) && in_array( 'plugin_links', $enabled, true ) ) { qmen_add_scanned_links_menu( $admin_bar, $add ); } // AdminFly Settings Link (Moved from Sidebar) if ( current_user_can( 'manage_options' ) ) { $opts = get_option('adminfly_settings'); $is_active = !empty($opts['activate_optimisation']) && empty($opts['debug_disable_all']); $accent = ($is_active && !empty($opts['accent_color'])) ? $opts['accent_color'] : '#2271b1'; // Manually add the settings node to avoid double-escaping by the $add helper $admin_bar->add_node( array( 'id' => 'qmen-main-settings', 'parent' => 'qmen-root', 'title' => '' . esc_html__('AdminFly Settings', 'adminfly-fast-navigator') . '', 'href' => admin_url('admin.php?page=qmen-quickmenu'), ) ); } } add_action( 'admin_bar_menu', 'qmen_admin_bar_menu', 100 ); /** * Add Scanned Plugin Settings menu to admin bar. */ function qmen_add_scanned_links_menu( $admin_bar, $add ) { $map = get_option( 'qmen_plugin_settings_map', array() ); if ( empty( $map ) ) { return; } $add( 'qmen-plugin-links', 'Plugin Links', null, 'qmen-root' ); // Helper to get plugin name if ( ! function_exists( 'get_plugins' ) ) { @require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $all_plugins = function_exists( 'get_plugins' ) ? get_plugins() : array(); foreach ( $map as $file => $url ) { $name = isset( $all_plugins[ $file ]['Name'] ) ? $all_plugins[ $file ]['Name'] : $file; $id = 'qmen-pl-link-' . md5( $file ); $add( $id, $name, $url, 'qmen-plugin-links' ); } } /** * Add WooCommerce menu to admin bar. */ function qmen_add_wc_menu( $admin_bar, $add ) { $add( 'qmen-wc', 'WooCommerce', null, 'qmen-root' ); $add( 'qmen-wc-home', 'Home', 'admin.php?page=wc-admin', 'qmen-wc' ); $add( 'qmen-wc-orders', 'Orders', 'edit.php?post_type=shop_order', 'qmen-wc' ); $add( 'qmen-wc-customers', 'Customers', 'admin.php?page=wc-admin&path=/customers', 'qmen-wc' ); $add( 'qmen-wc-coupons', 'Coupons', 'edit.php?post_type=shop_coupon', 'qmen-wc' ); // Reports (legacy). $add( 'qmen-wc-reports', 'Reports (legacy)', null, 'qmen-wc' ); $add( 'qmen-wc-reports-orders', 'Orders Report', 'admin.php?page=wc-reports&tab=orders', 'qmen-wc-reports' ); $add( 'qmen-wc-reports-customers', 'Customers Report', 'admin.php?page=wc-reports&tab=customers', 'qmen-wc-reports' ); $add( 'qmen-wc-reports-stock', 'Stock Report', 'admin.php?page=wc-reports&tab=stock', 'qmen-wc-reports' ); $add( 'qmen-wc-reports-taxes', 'Taxes Report', 'admin.php?page=wc-reports&tab=taxes', 'qmen-wc-reports' ); // Analytics. $add( 'qmen-wc-analytics', 'Analytics', null, 'qmen-wc' ); $add( 'qmen-wc-analytics-overview', 'Overview', 'admin.php?page=wc-admin&path=/analytics/overview', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-revenue', 'Revenue', 'admin.php?page=wc-admin&path=/analytics/revenue', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-orders', 'Orders', 'admin.php?page=wc-admin&path=/analytics/orders', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-products', 'Products', 'admin.php?page=wc-admin&path=/analytics/products', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-categories', 'Categories', 'admin.php?page=wc-admin&path=/analytics/categories', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-coupons', 'Coupons', 'admin.php?page=wc-admin&path=/analytics/coupons', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-taxes', 'Taxes', 'admin.php?page=wc-admin&path=/analytics/taxes', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-downloads', 'Downloads', 'admin.php?page=wc-admin&path=/analytics/downloads', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-stock', 'Stock', 'admin.php?page=wc-admin&path=/analytics/stock', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-customers', 'Customers', 'admin.php?page=wc-admin&path=/analytics/customers', 'qmen-wc-analytics' ); $add( 'qmen-wc-analytics-settings', 'Settings', 'admin.php?page=wc-admin&path=/analytics/settings', 'qmen-wc-analytics' ); // Marketing. $add( 'qmen-wc-marketing', 'Marketing', null, 'qmen-wc' ); $add( 'qmen-wc-marketing-overview', 'Overview', 'admin.php?page=wc-admin&path=/marketing', 'qmen-wc-marketing' ); $add( 'qmen-wc-marketing-coupons', 'Coupons', 'edit.php?post_type=shop_coupon', 'qmen-wc-marketing' ); $add( 'qmen-wc-marketing-automations', 'Automations / MailPoet / Facebook / Google Ads (optional)', 'admin.php?page=wc-admin&path=/marketing', 'qmen-wc-marketing' ); $add( 'qmen-wc-marketing-extensions', 'Extensions', 'admin.php?page=wc-admin&path=/marketing/extensions', 'qmen-wc-marketing' ); // Settings. $add( 'qmen-wc-settings', 'Settings', null, 'qmen-wc' ); $add( 'qmen-wc-settings-general', 'General', 'admin.php?page=wc-settings&tab=general', 'qmen-wc-settings' ); $add( 'qmen-wc-settings-products', 'Products', null, 'qmen-wc-settings' ); $add( 'qmen-wc-settings-products-general', 'General', 'admin.php?page=wc-settings&tab=products', 'qmen-wc-settings-products' ); $add( 'qmen-wc-settings-products-inventory', 'Inventory', 'admin.php?page=wc-settings&tab=products§ion=inventory', 'qmen-wc-settings-products' ); $add( 'qmen-wc-settings-products-downloadable', 'Downloadable Products', 'admin.php?page=wc-settings&tab=products§ion=downloadable', 'qmen-wc-settings-products' ); $add( 'qmen-wc-settings-tax', 'Tax', null, 'qmen-wc-settings' ); $add( 'qmen-wc-settings-tax-standard', 'Standard Rates', 'admin.php?page=wc-settings&tab=tax§ion=standard', 'qmen-wc-settings-tax' ); $add( 'qmen-wc-settings-tax-reduced', 'Reduced Rates', 'admin.php?page=wc-settings&tab=tax§ion=reduced-rate', 'qmen-wc-settings-tax' ); $add( 'qmen-wc-settings-tax-zero', 'Zero Rate', 'admin.php?page=wc-settings&tab=tax§ion=zero-rate', 'qmen-wc-settings-tax' ); $add( 'qmen-wc-settings-shipping', 'Shipping', null, 'qmen-wc-settings' ); $add( 'qmen-wc-settings-shipping-zones', 'Shipping Zones', 'admin.php?page=wc-settings&tab=shipping', 'qmen-wc-settings-shipping' ); $add( 'qmen-wc-settings-shipping-options', 'Shipping Options', 'admin.php?page=wc-settings&tab=shipping§ion=options', 'qmen-wc-settings-shipping' ); $add( 'qmen-wc-settings-shipping-classes', 'Shipping Classes', 'admin.php?page=wc-settings&tab=shipping§ion=classes', 'qmen-wc-settings-shipping' ); $add( 'qmen-wc-settings-payments', 'Payments', 'admin.php?page=wc-settings&tab=checkout', 'qmen-wc-settings' ); $add( 'qmen-wc-settings-accounts', 'Accounts & Privacy', 'admin.php?page=wc-settings&tab=account', 'qmen-wc-settings' ); $add( 'qmen-wc-settings-emails', 'Emails', 'admin.php?page=wc-settings&tab=email', 'qmen-wc-settings' ); $add( 'qmen-wc-settings-integration', 'Integration', 'admin.php?page=wc-settings&tab=integration', 'qmen-wc-settings' ); $add( 'qmen-wc-settings-advanced', 'Advanced', null, 'qmen-wc-settings' ); $add( 'qmen-wc-settings-advanced-page-setup', 'Page Setup', 'admin.php?page=wc-settings&tab=advanced§ion=page_setup', 'qmen-wc-settings-advanced' ); $add( 'qmen-wc-settings-advanced-rest', 'REST API', 'admin.php?page=wc-settings&tab=advanced§ion=keys', 'qmen-wc-settings-advanced' ); $add( 'qmen-wc-settings-advanced-webhooks', 'Webhooks', 'admin.php?page=wc-settings&tab=advanced§ion=webhooks', 'qmen-wc-settings-advanced' ); $add( 'qmen-wc-settings-advanced-legacy', 'Legacy API', 'admin.php?page=wc-settings&tab=advanced§ion=legacy_api', 'qmen-wc-settings-advanced' ); $add( 'qmen-wc-settings-advanced-features', 'Features', 'admin.php?page=wc-settings&tab=advanced§ion=features', 'qmen-wc-settings-advanced' ); $add( 'qmen-wc-settings-advanced-blueprint', 'Blueprint', 'admin.php?page=wc-settings&tab=advanced§ion=blueprint', 'qmen-wc-settings-advanced' ); // Status. $add( 'qmen-wc-status', 'Status', null, 'qmen-wc' ); $add( 'qmen-wc-status-system', 'System Status', 'admin.php?page=wc-status&tab=status', 'qmen-wc-status' ); $add( 'qmen-wc-status-tools', 'Tools', 'admin.php?page=wc-status&tab=tools', 'qmen-wc-status' ); $add( 'qmen-wc-status-logs', 'Logs', 'admin.php?page=wc-status&tab=logs', 'qmen-wc-status' ); $add( 'qmen-wc-status-actions', 'Scheduled Actions', 'admin.php?page=wc-status&tab=action-scheduler', 'qmen-wc-status' ); // Extensions catalog. $add( 'qmen-wc-extensions', 'Extensions', 'admin.php?page=wc-addons', 'qmen-wc' ); // Conditionally show popular extensions only when active/present. $exts = array(); if ( qmen_wc_extension_available( 'subscriptions' ) ) { $exts['qmen-wc-subscriptions'] = array( 'Subscriptions', 'edit.php?post_type=shop_subscription' ); } if ( qmen_wc_extension_available( 'memberships' ) ) { $exts['qmen-wc-memberships'] = array( 'Memberships', 'admin.php?page=wc-memberships' ); } if ( qmen_wc_extension_available( 'bookings' ) ) { $exts['qmen-wc-bookings'] = array( 'Bookings', 'edit.php?post_type=wc_booking' ); } if ( qmen_wc_extension_available( 'points' ) ) { $exts['qmen-wc-points'] = array( 'Points and Rewards', 'admin.php?page=wc-points-rewards' ); } if ( qmen_wc_extension_available( 'deposits' ) ) { $exts['qmen-wc-deposits'] = array( 'Deposits', 'admin.php?page=wc-deposits' ); } if ( qmen_wc_extension_available( 'giftcards' ) ) { $exts['qmen-wc-giftcards'] = array( 'Gift Cards', 'admin.php?page=wc-gift-cards' ); } if ( ! empty( $exts ) ) { $add( 'qmen-wc-popular-ext', 'WooCommerce Extensions', null, 'qmen-wc' ); foreach ( $exts as $id => $tuple ) { $add( $id, $tuple[0], $tuple[1], 'qmen-wc-popular-ext' ); } } } /** * Add Products menu to admin bar. */ function qmen_add_products_menu( $admin_bar, $add ) { $add( 'qmen-products', 'Products', null, 'qmen-root' ); $add( 'qmen-products-all', 'All Products', 'edit.php?post_type=product', 'qmen-products' ); $add( 'qmen-products-add', 'Add New Product', 'post-new.php?post_type=product', 'qmen-products-all' ); $add( 'qmen-products-import', 'Import Products', 'edit.php?post_type=product&page=product_importer', 'qmen-products-all' ); $add( 'qmen-products-export', 'Export Products', 'edit.php?post_type=product&page=product_exporter', 'qmen-products-all' ); $add( 'qmen-products-categories', 'Categories', 'edit-tags.php?taxonomy=product_cat&post_type=product', 'qmen-products' ); $add( 'qmen-products-tags', 'Tags', 'edit-tags.php?taxonomy=product_tag&post_type=product', 'qmen-products' ); $add( 'qmen-products-attributes', 'Attributes', 'edit.php?post_type=product&page=product_attributes', 'qmen-products' ); $add( 'qmen-products-reviews', 'Reviews', 'edit-comments.php?post_type=product', 'qmen-products' ); // Product Status submenu. $add( 'qmen-products-status', 'Status', null, 'qmen-products' ); $add( 'qmen-products-status-all', 'All', 'edit.php?post_type=product', 'qmen-products-status' ); $add( 'qmen-products-status-publish', 'Published', 'edit.php?post_type=product&post_status=publish', 'qmen-products-status' ); $add( 'qmen-products-status-draft', 'Draft', 'edit.php?post_type=product&post_status=draft', 'qmen-products-status' ); $add( 'qmen-products-status-pending', 'Pending', 'edit.php?post_type=product&post_status=pending', 'qmen-products-status' ); $add( 'qmen-products-status-private', 'Private', 'edit.php?post_type=product&post_status=private', 'qmen-products-status' ); $add( 'qmen-products-status-trash', 'Trash', 'edit.php?post_type=product&post_status=trash', 'qmen-products-status' ); $add( 'qmen-products-status-sorting', 'Sorting', 'edit.php?post_type=product&orderby=menu_order&order=asc', 'qmen-products-status' ); // Edit Product by ID prompt. $admin_bar->add_node( array( 'id' => 'qmen-products-edit-by-id', 'parent' => 'qmen-products', 'title' => esc_html__( 'Find Product…', 'adminfly-fast-navigator' ), 'href' => '#', 'meta' => array( 'title' => __( 'Search Product by ID or Name', 'adminfly-fast-navigator' ), ), ) ); } /** * Add Orders menu to admin bar. */ function qmen_add_orders_menu( $admin_bar, $add ) { $add( 'qmen-orders', 'Orders', null, 'qmen-root' ); $add( 'qmen-orders-all', 'All Orders', 'edit.php?post_type=shop_order', 'qmen-orders' ); $add( 'qmen-orders-add', 'Add New Order', 'post-new.php?post_type=shop_order', 'qmen-orders-all' ); // Order Status submenu. $add( 'qmen-orders-status', 'Status', null, 'qmen-orders' ); $add( 'qmen-orders-status-all', 'All', 'edit.php?post_type=shop_order', 'qmen-orders-status' ); $add( 'qmen-orders-status-pending', 'Pending payment', 'edit.php?post_type=shop_order&post_status=wc-pending', 'qmen-orders-status' ); $add( 'qmen-orders-status-processing', 'Processing', 'edit.php?post_type=shop_order&post_status=wc-processing', 'qmen-orders-status' ); $add( 'qmen-orders-status-onhold', 'On hold', 'edit.php?post_type=shop_order&post_status=wc-on-hold', 'qmen-orders-status' ); $add( 'qmen-orders-status-completed', 'Completed', 'edit.php?post_type=shop_order&post_status=wc-completed', 'qmen-orders-status' ); $add( 'qmen-orders-status-cancelled', 'Cancelled', 'edit.php?post_type=shop_order&post_status=wc-cancelled', 'qmen-orders-status' ); $add( 'qmen-orders-status-refunded', 'Refunded', 'edit.php?post_type=shop_order&post_status=wc-refunded', 'qmen-orders-status' ); $add( 'qmen-orders-status-failed', 'Failed', 'edit.php?post_type=shop_order&post_status=wc-failed', 'qmen-orders-status' ); $add( 'qmen-orders-status-trash', 'Trash', 'edit.php?post_type=shop_order&post_status=trash', 'qmen-orders-status' ); // Edit Order by ID prompt. $admin_bar->add_node( array( 'id' => 'qmen-orders-edit-by-id', 'parent' => 'qmen-orders', 'title' => esc_html__( 'Find Order…', 'adminfly-fast-navigator' ), 'href' => '#', 'meta' => array( 'title' => __( 'Search Order by ID', 'adminfly-fast-navigator' ), ), ) ); } /** * Add Plugins menu to admin bar. */ function qmen_add_plugins_menu( $admin_bar, $add ) { $add( 'qmen-plugins', 'Plugins', null, 'qmen-root' ); $add( 'qmen-plugins-all', 'All Plugins', 'plugins.php', 'qmen-plugins' ); $add( 'qmen-plugins-add', 'Add New', 'plugin-install.php', 'qmen-plugins' ); $add( 'qmen-plugins-upload', 'Upload Plugin', 'plugin-install.php?tab=upload', 'qmen-plugins' ); $add( 'qmen-plugins-editor', 'Plugin Editor', 'plugin-editor.php', 'qmen-plugins' ); // List all standard plugins under the Plugins branch. if ( ! function_exists( 'get_plugins' ) ) { @require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $plugins = function_exists( 'get_plugins' ) ? get_plugins() : array(); $active_plugins = (array) get_option( 'active_plugins', array() ); // Load cached settings map $settings_map = get_option( 'qmen_plugin_settings_map', array() ); foreach ( $plugins as $file => $data ) { $name = isset( $data['Name'] ) ? $data['Name'] : $file; $pid = 'qmen-plugin-' . md5( $file ); $active = in_array( $file, $active_plugins, true ) || ( function_exists( 'is_plugin_active' ) && is_plugin_active( $file ) ); $label = ( $active ? '🟢 ' : '🔴 ' ) . $name; // Plugin Main Node $add( $pid, $label, false, 'qmen-plugins' ); if ( $active ) { // Deactivate link $deact = wp_nonce_url( admin_url( 'plugins.php?action=deactivate&plugin=' . urlencode( $file ) ), 'deactivate-plugin_' . $file ); $add( $pid . '-deactivate', __( 'Deactivate', 'adminfly-fast-navigator' ), $deact, $pid ); // Settings Link if ( isset( $settings_map[ $file ] ) && ! empty( $settings_map[ $file ] ) ) { $add( $pid . '-settings', __( 'Settings', 'adminfly-fast-navigator' ), $settings_map[ $file ], $pid ); } } else { // Activate link $act = wp_nonce_url( admin_url( 'plugins.php?action=activate&plugin=' . urlencode( $file ) ), 'activate-plugin_' . $file ); $add( $pid . '-activate', __( 'Activate', 'adminfly-fast-navigator' ), $act, $pid ); // Delete link $del = wp_nonce_url( admin_url( 'plugins.php?action=delete-plugin&plugin=' . urlencode( $file ) ), 'delete-plugin_' . $file ); $add( $pid . '-delete', __( 'Delete', 'adminfly-fast-navigator' ), $del, $pid ); } } } /** * Add Themes menu to admin bar. */ function qmen_add_themes_menu( $admin_bar, $add ) { $add( 'qmen-themes', 'Themes', null, 'qmen-root' ); $add( 'qmen-themes-all', 'All Themes', 'themes.php', 'qmen-themes' ); $add( 'qmen-themes-add', 'Add New', 'theme-install.php', 'qmen-themes' ); $add( 'qmen-themes-customize', 'Customize', 'customize.php', 'qmen-themes' ); $add( 'qmen-themes-editor', 'Theme Editor', 'theme-editor.php', 'qmen-themes' ); // List all themes under the Themes branch. $themes = wp_get_themes(); $current = get_stylesheet(); foreach ( $themes as $stylesheet => $theme ) { $name = $theme->get( 'Name' ); $tid = 'qmen-theme-' . md5( $stylesheet ); $active = ( $stylesheet === $current ); $label = ( $active ? '🟢 ' : '🔴 ' ) . $name; $add( $tid, $label, null, 'qmen-themes' ); if ( $active ) { $add( $tid . '-active', __( 'Active', 'adminfly-fast-navigator' ), null, $tid ); } else { $act = wp_nonce_url( admin_url( 'themes.php?action=activate&stylesheet=' . urlencode( $stylesheet ) ), 'switch-theme_' . $stylesheet ); $add( $tid . '-activate', __( 'Activate', 'adminfly-fast-navigator' ), $act, $tid ); $del = wp_nonce_url( admin_url( 'themes.php?action=delete&stylesheet=' . urlencode( $stylesheet ) ), 'delete-theme_' . $stylesheet ); $add( $tid . '-delete', __( 'Delete', 'adminfly-fast-navigator' ), $del, $tid ); } } } /** * Add Posts menu to admin bar. */ function qmen_add_posts_menu( $admin_bar, $add ) { $add( 'qmen-posts', 'Posts', null, 'qmen-root' ); $add( 'qmen-posts-all', 'All Posts', 'edit.php', 'qmen-posts' ); $add( 'qmen-posts-add', 'Add New Post', 'post-new.php', 'qmen-posts-all' ); $add( 'qmen-posts-bulk', 'Bulk Edit', 'edit.php', 'qmen-posts-all' ); $admin_bar->add_node( array( 'id' => 'qmen-posts-bulk', 'parent' => 'qmen-posts-all', 'meta' => array( 'title' => __( 'Open Posts list, select items, then choose Bulk actions → Edit, and Apply.', 'adminfly-fast-navigator' ) ), ) ); // Posts Status submenu. $add( 'qmen-posts-status', 'Status', null, 'qmen-posts' ); $add( 'qmen-posts-status-all', 'All', 'edit.php', 'qmen-posts-status' ); $add( 'qmen-posts-status-publish', 'Published', 'edit.php?post_status=publish', 'qmen-posts-status' ); $add( 'qmen-posts-status-draft', 'Draft', 'edit.php?post_status=draft', 'qmen-posts-status' ); $add( 'qmen-posts-status-pending', 'Pending', 'edit.php?post_status=pending', 'qmen-posts-status' ); $add( 'qmen-posts-status-private', 'Private', 'edit.php?post_status=private', 'qmen-posts-status' ); $add( 'qmen-posts-status-trash', 'Trash', 'edit.php?post_status=trash', 'qmen-posts-status' ); // Edit Post by ID prompt. $admin_bar->add_node( array( 'id' => 'qmen-posts-edit-by-id', 'parent' => 'qmen-posts', 'title' => esc_html__( 'Find Post…', 'adminfly-fast-navigator' ), 'href' => '#', 'meta' => array( 'title' => __( 'Search Post by ID or Title', 'adminfly-fast-navigator' ), ), ) ); } /** * Add Pages menu to admin bar. */ function qmen_add_pages_menu( $admin_bar, $add ) { $add( 'qmen-pages', 'Pages', null, 'qmen-root' ); $add( 'qmen-pages-all', 'All Pages', 'edit.php?post_type=page', 'qmen-pages' ); $add( 'qmen-pages-add', 'Add New Page', 'post-new.php?post_type=page', 'qmen-pages-all' ); $add( 'qmen-pages-bulk', 'Bulk Edit', 'edit.php?post_type=page', 'qmen-pages-all' ); $admin_bar->add_node( array( 'id' => 'qmen-pages-bulk', 'parent' => 'qmen-pages-all', 'meta' => array( 'title' => __( 'Open Pages list, select items, then choose Bulk actions → Edit, and Apply.', 'adminfly-fast-navigator' ) ), ) ); // Pages Status submenu. $add( 'qmen-pages-status', 'Status', null, 'qmen-pages' ); $add( 'qmen-pages-status-all', 'All', 'edit.php?post_type=page', 'qmen-pages-status' ); $add( 'qmen-pages-status-publish', 'Published', 'edit.php?post_type=page&post_status=publish', 'qmen-pages-status' ); $add( 'qmen-pages-status-draft', 'Draft', 'edit.php?post_type=page&post_status=draft', 'qmen-pages-status' ); $add( 'qmen-pages-status-pending', 'Pending', 'edit.php?post_type=page&post_status=pending', 'qmen-pages-status' ); $add( 'qmen-pages-status-private', 'Private', 'edit.php?post_type=page&post_status=private', 'qmen-pages-status' ); $add( 'qmen-pages-status-trash', 'Trash', 'edit.php?post_type=page&post_status=trash', 'qmen-pages-status' ); // Edit Page by ID prompt. $admin_bar->add_node( array( 'id' => 'qmen-pages-edit-by-id', 'parent' => 'qmen-pages', 'title' => esc_html__( 'Find Page…', 'adminfly-fast-navigator' ), 'href' => '#', 'meta' => array( 'title' => __( 'Search Page by ID or Title', 'adminfly-fast-navigator' ), ), ) ); } /** * Add Users menu to admin bar. */ function qmen_add_users_menu( $admin_bar, $add ) { $add( 'qmen-users', 'Users', null, 'qmen-root' ); $add( 'qmen-users-all', 'All Users', 'users.php', 'qmen-users' ); if ( current_user_can( 'create_users' ) ) { $add( 'qmen-users-add', 'Add New User', 'user-new.php', 'qmen-users-all' ); } $add( 'qmen-users-profile', 'Your Profile', 'profile.php', 'qmen-users' ); // Roles submenu populated dynamically. $add( 'qmen-users-roles', 'Roles', null, 'qmen-users' ); if ( ! function_exists( 'get_editable_roles' ) ) { @require_once ABSPATH . 'wp-admin/includes/user.php'; } $roles = function_exists( 'get_editable_roles' ) ? get_editable_roles() : array(); uasort( $roles, function( $a, $b ) { $a_name = isset( $a['name'] ) ? $a['name'] : ''; $b_name = isset( $b['name'] ) ? $b['name'] : ''; return strcasecmp( $a_name, $b_name ); } ); foreach ( $roles as $role_key => $role_data ) { $label = isset( $role_data['name'] ) ? $role_data['name'] : ucfirst( $role_key ); $add( 'qmen-users-role-' . md5( $role_key ), $label, 'users.php?role=' . urlencode( $role_key ), 'qmen-users-roles' ); } // Edit User by ID via prompt. $admin_bar->add_node( array( 'id' => 'qmen-users-edit-by-id', 'parent' => 'qmen-users', 'title' => esc_html__( 'Find User…', 'adminfly-fast-navigator' ), 'href' => '#', 'meta' => array( 'title' => __( 'Search User by ID, Name, or Email', 'adminfly-fast-navigator' ), ), ) ); } /** * Add WP Settings menu to admin bar. */ function qmen_add_settings_menu( $admin_bar, $add ) { $add( 'qmen-settings', 'Settings', null, 'qmen-root' ); $add( 'qmen-settings-general', 'General', 'options-general.php', 'qmen-settings' ); $add( 'qmen-settings-writing', 'Writing', 'options-writing.php', 'qmen-settings' ); $add( 'qmen-settings-reading', 'Reading', 'options-reading.php', 'qmen-settings' ); $add( 'qmen-settings-discussion', 'Discussion', 'options-discussion.php', 'qmen-settings' ); $add( 'qmen-settings-media', 'Media', 'options-media.php', 'qmen-settings' ); $add( 'qmen-settings-permalink', 'Permalinks', 'options-permalink.php', 'qmen-settings' ); $add( 'qmen-settings-privacy', 'Privacy', 'options-privacy.php', 'qmen-settings' ); }