publish; // Kommentare $comments_count = wp_count_comments()->total_comments; // Kategorien $selected_categories = get_option('statistik_manager_selected_categories', []); $categories_count = 0; if (!empty($selected_categories)) { $categories_count = count($selected_categories); } else { // Alle Kategorien zählen, wenn keine ausgewählt wurden $categories_count = wp_count_terms('category'); } // Serien (angenommen, Serien sind benutzerdefinierte Taxonomie) $series_count = 0; if (taxonomy_exists('series')) { $count = wp_count_terms('series'); $series_count = is_wp_error($count) ? 0 : (int) $count; } // Eröffnungsdatum $opening_date = get_option('statistik_manager_opening_date', ''); return [ 'posts_count' => $posts_count, 'comments_count' => $comments_count, 'categories_count' => $categories_count, 'series_count' => $series_count, 'opening_date' => $opening_date ]; } // Banner-Funktion function statistik_manager_display_banner($position) { if (!get_option('statistik_manager_banner_enabled', 1)) { return; } $banner_text = get_option('statistik_manager_banner_text', 'Willkommen auf unserer Webseite!'); $banner_color = get_option('statistik_manager_banner_color', '#0073aa'); $banner_position = get_option('statistik_manager_banner_position', 'top'); $font_size = get_option('statistik_manager_banner_font_size', 'medium'); $banner_icon = get_option('statistik_manager_banner_icon', 'fas fa-info-circle'); // Standard-Icon $show_icon = get_option('statistik_manager_show_icon', 1); // Option zur Aktivierung des Icons // Schriftgröße je nach Auswahl setzen switch ($font_size) { case 'small': $font_size_css = '14px'; break; case 'medium': $font_size_css = '18px'; break; case 'large': $font_size_css = '24px'; break; default: $font_size_css = '18px'; } if ($banner_position !== $position) { return; } // Standard-Styles für das Banner $style = "background-color: " . esc_attr($banner_color) . "; color: #fff; text-align: center; padding: 10px; width: 100%; height: 50px; /* Feste Höhe */ line-height: 30px; /* Zentrierte Schrift */ z-index: 9999; position: fixed; top: 0; left: 0;"; $text_style = "font-size: " . esc_attr($font_size_css) . ";"; $icon_style = "font-size: 24px; margin-right: 8px;"; // Feste Größe für Icon echo '
'; // Icon nur anzeigen, wenn gewünscht if ($show_icon && !empty($banner_icon)) { echo ''; } echo '' . esc_html($banner_text) . ''; echo '
'; } // Funktion für das Banner im Header (nach ) function statistik_manager_display_banner_header() { add_action('wp_body_open', function() { statistik_manager_display_banner('top'); }); } // Falls `wp_body_open` nicht unterstützt wird, als Fallback `wp_footer` nutzen function statistik_manager_display_banner_header_fallback() { add_action('wp_footer', function() { statistik_manager_display_banner('top'); }, 5); } // Funktion für das Banner im Footer function statistik_manager_display_banner_footer() { add_action('wp_footer', function() { statistik_manager_display_banner('bottom'); }, 10); } // Banner laden (Header mit Fallback) if (function_exists('wp_body_open')) { statistik_manager_display_banner_header(); } else { statistik_manager_display_banner_header_fallback(); } // Fix: Admin-Leiste (Wenn Admin angemeldet ist, Banner nach unten verschieben) function statistik_manager_admin_bar_fix() { if (is_admin_bar_showing()) { echo ''; } else { echo ''; } } add_action('wp_head', 'statistik_manager_admin_bar_fix'); // Shortcode für die Anzeige der Statistiken function statistik_manager_shortcode() { $statistics = statistik_manager_get_statistics(); $webseitenname = get_bloginfo('name'); $output = '
'; $output .= '

Statistikübersicht

'; $output .= '
'; if (get_option('statistik_manager_show_posts')) { $output .= '
'; $output .= '

Beiträge:
' . esc_html($statistics['posts_count']) . '

'; } if (get_option('statistik_manager_show_comments')) { $output .= '
'; $output .= '

Kommentare:
' . esc_html($statistics['comments_count']) . '

'; } if (get_option('statistik_manager_show_categories')) { $output .= '
'; $output .= '

Kategorien:
' . esc_html($statistics['categories_count']) . '

'; } if (get_option('statistik_manager_show_series')) { $output .= '
'; $output .= '

Serien:
' . esc_html($statistics['series_count']) . '

'; } $output .= '
'; // Eröffnungsdatum anzeigen, wenn gesetzt if (!empty($statistics['opening_date'])) { $formatted_date = date('d.m.Y', strtotime($statistics['opening_date'])); $output .= '
'; $output .= ''; $output .= '

' . sprintf(__('%s wurde am %s eröffnet.', 'statistik-manager'), esc_html($webseitenname), esc_html($formatted_date)) . '

'; $output .= '
'; } $output .= '
'; return $output; } add_shortcode('statistik_manager', 'statistik_manager_shortcode'); // Admin-Panel CSS einbinden, nur auf der Plugin-Seite // Das frühere seitenspezifische admin-style.css wurde durch das gemeinsame // Design-System (wp-multi-toolkit/assets/admin.css) ersetzt. // Frontend CSS nur einbinden, wenn der Shortcode verwendet wird function statistik_manager_enqueue_frontend_styles() { if (has_shortcode(get_post()->post_content, 'statistik_manager')) { wp_enqueue_style('statistik-manager-frontend-style', plugins_url('css/style.css', WP_MULTI_FILE)); } } add_action('wp_enqueue_scripts', 'statistik_manager_enqueue_frontend_styles'); // Der Menüpunkt "Statistik & Notice" wird zentral in wp_multi_register_admin_menus() registriert. // Funktion für die Plugin-Optionen-Seite function statistik_manager_options_page() { wpmt_admin_page_open( __('Statistik & Notice', 'statistik-manager'), __('Statistik-Shortcode, Lesezeichen und Frontend-Banner konfigurieren', 'statistik-manager') ); wpmt_admin_card_open(__('Einstellungen', 'statistik-manager')); ?>

/>
/>
/>
/>

'category', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, )); if (!empty($categories) && !is_wp_error($categories)) : $selected_categories = get_option('statistik_manager_selected_categories', []); ?>

Banner-Einstellungen

Banner anzeigen />
Banner Text
Banner Farbe
Banner Position
Icon auswählen
Icon anzeigen />
Schriftgröße
'; wpmt_admin_card_open(__('Kurzanleitung: Statistik-Box', 'statistik-manager')); ?>
  1. Shortcode einfügen: Füge [statistik_manager] an der gewünschten Stelle in einem Beitrag oder einer Seite ein.
  2. Statistiken wählen: Beiträge, Kommentare, Kategorien und Serien lassen sich einzeln ein- und ausblenden.
  3. Kategorien: Wähle aus, welche Kategorien in die Zählung einbezogen werden.
  4. Eröffnungsdatum: Wird automatisch in der Statistik-Box angezeigt.
  5. Banner: Ein konfigurierbares Hinweis-Banner kann im Header oder Footer der Website eingeblendet werden.
  1. Anzeigen: Der Shortcode [display_bookmarks] listet die gespeicherten Lesezeichen der Besucher auf.
  2. Hinzufügen: Über [add_bookmark] erhalten Besucher ein Formular zum Speichern eines Lesezeichens.
  3. Löschen: Nur der Besitzer eines Lesezeichens kann es über den Löschen-Button entfernen.

git.viper.ipv64.net'); ?>

'; wpmt_admin_page_close(); } // Optionen registrieren function statistik_manager_register_settings() { register_setting('statistik_manager_settings_group', 'statistik_manager_show_posts'); register_setting('statistik_manager_settings_group', 'statistik_manager_show_comments'); register_setting('statistik_manager_settings_group', 'statistik_manager_show_categories'); register_setting('statistik_manager_settings_group', 'statistik_manager_show_series'); register_setting('statistik_manager_settings_group', 'statistik_manager_selected_categories'); register_setting('statistik_manager_settings_group', 'statistik_manager_opening_date'); register_setting('statistik_manager_settings_group', 'statistik_manager_banner_text'); register_setting('statistik_manager_settings_group', 'statistik_manager_banner_color', [ 'sanitize_callback' => 'sanitize_hex_color', ]); register_setting('statistik_manager_settings_group', 'statistik_manager_banner_position'); register_setting('statistik_manager_settings_group', 'statistik_manager_banner_enabled'); register_setting('statistik_manager_settings_group', 'statistik_manager_banner_icon', [ 'sanitize_callback' => function($value) { // Icon-Wert besteht aus mehreren space-getrennten CSS-Klassen (z. B. "fas fa-bell") $classes = array_map('sanitize_html_class', explode(' ', (string) $value)); return implode(' ', array_filter($classes)); }, ]); register_setting('statistik_manager_settings_group', 'statistik_manager_show_icon'); register_setting('statistik_manager_settings_group', 'statistik_manager_banner_font_size'); } add_action('admin_init', 'statistik_manager_register_settings'); // Standardwerte setzen function statistik_manager_set_default_options() { if (get_option('statistik_manager_show_posts') === false) { update_option('statistik_manager_show_posts', 1); } if (get_option('statistik_manager_show_comments') === false) { update_option('statistik_manager_show_comments', 1); } if (get_option('statistik_manager_show_categories') === false) { update_option('statistik_manager_show_categories', 1); } if (get_option('statistik_manager_show_series') === false) { update_option('statistik_manager_show_series', 1); } if (get_option('statistik_manager_selected_categories') === false) { update_option('statistik_manager_selected_categories', []); } if (get_option('statistik_manager_banner_enabled') === false) { update_option('statistik_manager_banner_enabled', 1); } if (get_option('statistik_manager_banner_font_size') === false) { update_option('statistik_manager_banner_font_size', 'medium'); } } add_action('admin_init', 'statistik_manager_set_default_options');