// Aggressive sidebar alphabetization with diagnostics
add_action('admin_menu', function(){
global $menu;
if (!is_array($menu)) return;
if (!current_user_can('manage_options')) return;
$fixed = [];
$to_sort = [];
foreach ($menu as $k=>$v) {
if (isset($v[2]) && ($v[2] === 'index.php' || strpos($v[2],'separator') === 0)) {
$fixed[$k] = $v;
} else {
$to_sort[$k] = $v;
}
}
uasort($to_sort, function($a, $b){ return strcasecmp($a[0], $b[0]); });
$menu = $fixed + $to_sort;
// Diagnostic output
add_action('admin_notices', function(){
echo '
NDABOX3.0 menu sort executed. Menu items: '.count($menu).'
';
});
}, 99999);
// Dashboard notice if folder/main file is misnamed or not loaded
add_action('admin_notices', function(){
$expected_folder = 'NDABOX3.0';
$expected_file = 'ndabox3.php';
$plugin_dir = basename(dirname(__FILE__));
$plugin_file = basename(__FILE__);
if (strtolower($plugin_dir) !== strtolower($expected_folder) || strtolower($plugin_file) !== strtolower($expected_file)) {
echo 'NDABOX3.0 plugin folder or main file may be misnamed. Folder: '.esc_html($plugin_dir).' | File: '.esc_html($plugin_file).'. Please ensure the folder is "NDABOX3.0" and the main file is "ndabox3.php" for full compatibility.
';
}
});
// Alphabetize left sidebar menu items in WP admin dashboard
add_action('admin_menu', function(){
global $menu;
if (!is_array($menu)) return;
// Only alphabetize for admins
if (!current_user_can('manage_options')) return;
// Preserve Dashboard and separator at top
$fixed = [];
foreach ($menu as $k=>$v) {
if (isset($v[2]) && ($v[2] === 'index.php' || $v[2] === 'separator1')) {
$fixed[$k] = $v;
unset($menu[$k]);
}
}
// Sort remaining menu items alphabetically by label
uasort($menu, function($a, $b){
return strcasecmp($a[0], $b[0]);
});
// Merge fixed items back to top
$menu = $fixed + $menu;
}, 9999);
// Enhanced Utility Console menu registration and admin bar shortcut
add_action('admin_menu', function(){
$callback = function(){
try {
if (class_exists('Ndabox3\\Modules\\UtilityConsole\\Module')) {
$mod = new \Ndabox3\Modules\UtilityConsole\Module();
$mod->render_page();
} else {
throw new \Exception('UtilityConsole module not found.');
}
} catch (\Throwable $e) {
echo 'Ndabox3 Utility Console
Error: '.esc_html($e->getMessage()).'
';
}
// Add help tab for context
$screen = get_current_screen();
if ($screen && method_exists($screen, 'add_help_tab')) {
$screen->add_help_tab([
'id' => 'ndabox3_utility_console_help',
'title' => 'Utility Console Help',
'content' => 'This is the central admin console for all NDABOX3.0 modules and utilities. Use this page to manage features, view diagnostics, and run automation.
'
]);
}
};
if (function_exists('add_management_page')) {
add_management_page('Ndabox3 Utility Console','Ndabox3 Utility Console','manage_options','ndabox3-console',$callback);
}
if (function_exists('add_menu_page')) {
add_menu_page('Ndabox3 Utility Console','Ndabox3 Utility Console','manage_options','ndabox3-console',$callback,'dashicons-admin-tools',3);
}
}, 1);
// Add admin bar shortcut for Utility Console
add_action('admin_bar_menu', function($wp_admin_bar){
if (!current_user_can('manage_options')) return;
$wp_admin_bar->add_node([
'id' => 'ndabox3_utility_console',
'title' => ' Ndabox3 Utility Console',
'href' => admin_url('tools.php?page=ndabox3-console'),
'meta' => ['class'=>'ndabox3-utility-console-bar']
]);
}, 100);
// Radical fallback: register Utility Console menu in both Tools and Dashboard
add_action('admin_menu', function(){
$callback = function(){
try {
if (class_exists('Ndabox3\\Modules\\UtilityConsole\\Module')) {
$mod = new \Ndabox3\Modules\UtilityConsole\Module();
$mod->render_page();
} else {
throw new \Exception('UtilityConsole module not found.');
}
} catch (\Throwable $e) {
echo 'Ndabox3 Utility Console
Error: '.esc_html($e->getMessage()).'
';
}
};
if (function_exists('add_management_page')) {
add_management_page('Ndabox3 Utility Console','Ndabox3 Utility Console','manage_options','ndabox3-console',$callback);
}
if (function_exists('add_menu_page')) {
add_menu_page('Ndabox3 Utility Console','Ndabox3 Utility Console','manage_options','ndabox3-console',$callback,'dashicons-admin-tools',3);
}
}, 1);
// Admin notice if menu not loaded
add_action('admin_notices', function(){
global $pagenow;
if ($pagenow === 'tools.php' || $pagenow === 'index.php') {
if (!class_exists('Ndabox3\\Modules\\UtilityConsole\\Module')) {
echo 'Ndabox3 Utility Console menu fallback loaded, but module not found. Please check plugin files and autoloading.
';
}
}
});
// Absolute fallback: always show Utility Console menu in Tools
add_action('admin_menu', function(){
if (!function_exists('add_submenu_page')) return;
add_submenu_page(
'tools.php',
'Ndabox3 Utility Console',
'Ndabox3 Utility Console',
'manage_options',
'ndabox3-console',
function(){
try {
if (class_exists('Ndabox3\\Modules\\UtilityConsole\\Module')) {
$mod = new \Ndabox3\Modules\UtilityConsole\Module();
$mod->render_page();
} else {
throw new \Exception('UtilityConsole module not found.');
}
} catch (\Throwable $e) {
echo 'Ndabox3 Utility Console
Error: '.esc_html($e->getMessage()).'
';
}
}
);
}, 999);
// Add 'Settings' link to plugin row (robust fallback)
foreach ([basename(__FILE__), 'ndabox3.php', 'NDABOX3.0/ndabox3.php', 'NDABOX3.0.php'] as $slug) {
add_filter('plugin_action_links_' . $slug, function($links){
$settings_url = admin_url('tools.php?page=ndabox3-console');
array_unshift($links, 'Settings');
return $links;
});
}
// Fallback Utility Console menu registration (always add to Tools)
add_action('admin_menu', function(){
if (!function_exists('add_submenu_page')) return;
add_submenu_page(
'tools.php',
'Ndabox3 Utility Console',
'Ndabox3 Utility Console',
'manage_options',
'ndabox3-console',
function(){
if (class_exists('Ndabox3\Modules\UtilityConsole\Module')) {
$mod = new \Ndabox3\Modules\UtilityConsole\Module();
$mod->render_page();
} else {
echo 'Ndabox3 Utility Console
Module not found or not loaded.
';
}
}
);
}, 99);