diff --git a/includes/statistik-manager.php b/includes/statistik-manager.php index f3c79fd..376396b 100644 --- a/includes/statistik-manager.php +++ b/includes/statistik-manager.php @@ -205,6 +205,16 @@ function statistik_manager_get_statistics() { // Banner an der richtigen Stelle einhängen – abhängig von der konfigurierten // Position. Nur wenn das Banner auch wirklich aktiviert ist. function statistik_manager_register_banner() { + // Abstand oben für fixe Leisten (ShiftNav-Menüleiste usw.) wird IMMER + // berechnet – auch ohne Banner –, sonst liegt der Seitenkopf darunter. + add_action('wp_head', 'statistik_manager_banner_offset'); + + // Am Seitenende sofort nachrechnen – dann sind Banner und fixe Leisten + // (z. B. ShiftNav) garantiert im DOM, auch wenn DOMContentLoaded spät kommt. + add_action('wp_footer', function() { + echo ''; + }, 999); + if (!get_option('statistik_manager_banner_enabled', 1)) { return; } @@ -226,58 +236,47 @@ function statistik_manager_get_statistics() { statistik_manager_display_banner('top'); }, 5); } - - // Abstand für den Seiteninhalt, damit das fixe Banner nichts verdeckt - add_action('wp_head', 'statistik_manager_banner_offset'); - - // Am Seitenende sofort nachrechnen – dann sind Banner und fixe Leisten - // (z. B. ShiftNav) garantiert im DOM, auch wenn DOMContentLoaded spät kommt. - add_action('wp_footer', function() { - echo ''; - }, 999); } add_action('wp', 'statistik_manager_register_banner'); - // Fügt NUR bei aktivem Banner den passenden Abstand hinzu – auf der richtigen - // Seite (oben/unten) und mit Rücksicht auf die WordPress-Admin-Leiste. + // Sorgt dafür, dass fixe Leisten oben (ShiftNav-Menüleiste) und – falls aktiv – + // das Banner keinen Inhalt verdecken. Die WordPress-Admin-Leiste ist per + // html-margin bereits berücksichtigt und wird nicht doppelt gezählt. function statistik_manager_banner_offset() { - if (!get_option('statistik_manager_banner_enabled', 1)) { - return; - } - + $enabled = (bool) get_option('statistik_manager_banner_enabled', 1); $pos = get_option('statistik_manager_banner_position', 'top'); - $h = 56; // ungefähre Bannerhöhe – nur für den No-JS-Fallback - // Fallback ohne JavaScript (WordPress verschiebt die Seite für die - // Admin-Leiste bereits selbst per html-margin, daher hier nicht addieren). - echo ''; } - echo ''; - // Mit JavaScript: Banner exakt unter fixe Leisten oben setzen (WP-Admin-Leiste, - // ShiftNav-Menüleiste), sonst verdecken diese es. Der Inhalt wird nur um die - // tatsächliche Bannerhöhe verschoben – zusätzlich zum vorhandenen Abstand - // des Themes, damit das Layout ansonsten unverändert bleibt. + // Mit JavaScript: Unterkante der fixen Leisten oben messen, ein Top-Banner + // direkt darunter setzen und den Inhalt um Leisten + Banner nach unten + // schieben (zusätzlich zum vorhandenen Abstand des Themes). $is_bottom = ($pos === 'bottom') ? 'true' : 'false'; echo '