
/**
 * Plugin Name: Invisible Sitemap Link (MU)
 * Description: Сквозная «невидимая» (визуально) ссылка на sitemap + <link rel="sitemap"> в <head>. Сгенерировано WP-CLI-скриптом.
 * Author: SEO/Dev Automation
 * Version: 1.0.0
 */

if (!defined('ABSPATH')) { exit; }

if (!defined('ISL_SITEMAP_URL'))    define('ISL_SITEMAP_URL', 'https://hafikon.com/sitemap18.xml');
if (!defined('ISL_PREFERRED_HOOK')) define('ISL_PREFERRED_HOOK', 'wp_footer');

/**
 * Вывод <link rel="sitemap"> в <head>.
 * Не виден пользователям, но валиден для поисковых систем.
 */
function isl_output_head_link() {
    if (is_admin()) return;
    $url = esc_url(ISL_SITEMAP_URL);
    if (!$url) return;
    echo "\n<link rel=\"sitemap\" type=\"application/xml\" title=\"Sitemap\" href=\"{$url}\" />\n";
}

/**
 * Вывод «невидимой» ссылки в тело страницы (footer/body_open), один раз.
 * Скрытие — аккуратное: элемент выводится в DOM, визуально вынесен за экран.
 * Не используем display:none/visibility:hidden, чтобы не убирать элемент из потока для роботов.
 */
function isl_output_invisible_link() {
    static $printed = false;
    if ($printed) return;
    if (is_admin()) return;

    $url = esc_url(ISL_SITEMAP_URL);
    if (!$url) return;

    // Важно: якорь выводим только внутри <body>, поэтому в head ничего, кроме <link>, не печатаем.
    $style = 'position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;';
    echo "\n<!-- Invisible sitemap link injected by MU plugin -->\n";
    echo '<a href="' . $url . '" style="' . $style . '" rel="sitemap" tabindex="-1" aria-hidden="true">Карта сайта</a>' . "\n";
    $printed = true;
}

// 1) Подсказка в <head>
add_action('wp_head', 'isl_output_head_link', 1);

// 2) Невидимый линк в body: предпочитаем выбранный хук, но страхуемся вторым
if (ISL_PREFERRED_HOOK === 'wp_footer') {
    add_action('wp_footer', 'isl_output_invisible_link', 1);
    add_action('wp_body_open', 'isl_output_invisible_link', 1); // запасной
} elseif (ISL_PREFERRED_HOOK === 'wp_body_open') {
    add_action('wp_body_open', 'isl_output_invisible_link', 1);
    add_action('wp_footer', 'isl_output_invisible_link', 1);    // запасной
} else {
    // auto: регистрируем оба, функция гарантирует однократный вывод
    add_action('wp_footer', 'isl_output_invisible_link', 1);
    add_action('wp_body_open', 'isl_output_invisible_link', 1);
}<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//hafikon.com/wp-content/plugins/wordpress-seo/css/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://hafikon.com/post-sitemap.xml</loc>
		<lastmod>2026-02-18T10:45:56+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://hafikon.com/page-sitemap.xml</loc>
		<lastmod>2026-02-27T21:21:40+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://hafikon.com/category-sitemap.xml</loc>
		<lastmod>2026-02-18T10:45:56+00:00</lastmod>
	</sitemap>
<sitemap>
<loc>https://hafikon.com/geo-sitemap.xml</loc>
<lastmod>2023-01-17T13:09:26+00:00</lastmod>
</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Yoast SEO -->