// ------------------------------ PLUGIN BACKEND ----------------- /** * K-Backend tweaks (dominio + color picker + filtrado de avisos + barra STICKY) */ /* ========================= * 1) ORDENAR MENÚ ALFABÉTICO (ignorando acentos) * ========================= */ add_action('admin_menu', function() { global $menu; if (!is_array($menu)) return; $real = []; $separators = []; foreach ($menu as $index => $item) { $slug = isset($item[2]) ? $item[2] : ''; if (strpos($slug, 'separator') !== false) $separators[$index] = $item; else $real[$index] = $item; } uasort($real, function($a, $b) { $ta = function_exists('remove_accents') ? remove_accents(wp_strip_all_tags($a[0])) : wp_strip_all_tags($a[0]); $tb = function_exists('remove_accents') ? remove_accents(wp_strip_all_tags($b[0])) : wp_strip_all_tags($b[0]); return strnatcmp(mb_strtolower($ta), mb_strtolower($tb)); }); $sorted = []; $realItems = array_values($real); $ri = 0; for ($i = 0; $i <= max(array_keys($menu)); $i++) { if (isset($separators[$i])) $sorted[$i] = $separators[$i]; else if (isset($realItems[$ri])) $sorted[$i] = $realItems[$ri++]; } $menu = array_values($sorted); }, 9999); /* ========================= * 2) QUITAR PUBLICIDAD / NOTICES (selectivo) * - Visibles: resultados de acción, migraciones, licencias * - Ocultas: reseñas, donaciones, upsells, “instalar otro plugin”, promos * ========================= */ add_action('admin_head', function () { ?> 'string', 'sanitize_callback' => function($v){ $v = trim($v); if (preg_match('/^#([A-Fa-f0-9]{6})$/', $v)) return strtoupper($v); if (preg_match('/^#([A-Fa-f0-9]{3})$/', $v)) return strtoupper($v); return '#111111'; }, 'default' => '#111111' ]); }); add_action('admin_menu', function(){ add_menu_page('K-Backend','K-Backend','manage_options','ksk-backend','ksk_backend_render_page','dashicons-admin-generic',3); }); function ksk_backend_render_page(){ $color = get_option('ksk_adminmenu_color', '#111111'); ?>

K-Backend

#adminmenu, #adminmenu .wp-submenu, #adminmenu .wp-submenu-wrap, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu.sub-open { background-color: '.esc_html($c).' !important; } #adminmenu a.menu-top, #adminmenu .wp-submenu a { color: rgba(255,255,255,.92) !important; } #adminmenu .wp-has-current-submenu > a.menu-top, #adminmenu .wp-menu-open > a.menu-top { background: rgba(255,255,255,.10) !important; } #adminmenu li.menu-top:hover, #adminmenu li.menu-top:focus { background: rgba(255,255,255,.08) !important; } '; }); /* ========================= * 4) BARRA SUPERIOR STICKY (mismo color que menú) * - Host en Arial, sin negrita, un poco más pequeño * ========================= */ add_action('in_admin_header', function () { if (!current_user_can('read')) return; $home_url = home_url('/'); $host = parse_url($home_url, PHP_URL_HOST); if (!$host) { $host = $_SERVER['HTTP_HOST'] ?? ''; } $display_host = (stripos($host, 'www.') === 0) ? $host : ('www.' . $host); $theme_name = wp_get_theme()->get('Name'); $menu_color = get_option('ksk_adminmenu_color', '#111111'); echo '
'.esc_html($display_host).' Tema: '.esc_html($theme_name).'
'; }, 5); // ------------------------------ FIN PLUGIN / Más información: www.ksk.cat ----------------------------------- /* =============================== */ /* ========== "Más información" en la pantalla de Plugins ========== */ /** Asegurar ThickBox en plugins.php */ add_action('admin_enqueue_scripts', function($hook){ if ($hook === 'plugins.php') { add_thickbox(); } }); /** Enlace destacado en acciones de la fila (primera columna) */ add_filter('plugin_action_links_' . plugin_basename(__FILE__), function($links){ $id = 'ksk-plugin-info-k-backend-03'; $a = '' . '' . 'Más información' . ''; array_unshift($links, $a); return $links; }); /** Enlace adicional en metadatos de la fila (debajo del nombre) */ add_filter('plugin_row_meta', function($links, $file){ if ($file !== plugin_basename(__FILE__)) return $links; $id = 'ksk-plugin-info-k-backend-03'; $links[] = 'Más información'; return $links; }, 10, 2); /** Contenido del popup (lee readme.txt y lo muestra) */ add_action('admin_footer-plugins.php', function(){ $readme_path = plugin_dir_path(__FILE__) . 'readme.txt'; $readme_content = file_exists($readme_path) ? file_get_contents($readme_path) : 'No se encontró el archivo readme.txt.'; $readme_content = wp_kses_post($readme_content); $id = 'ksk-plugin-info-k-backend-03'; ?>