// ------------------------------ 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');
?>
#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';
?>
'Plugin Name']);
echo esc_html($data['Name'] ?? 'K-BACKEND-03');
?>