5 Commits
1.3 ... 1.4

5 changed files with 182 additions and 81 deletions

View File

@@ -108,7 +108,6 @@ function minecraft_modern_scripts() {
) )
); );
// === NEU & WICHTIG: Header-Skript-Informationen übergeben ===
// Dies verhindert das Flackern im Customizer. // Dies verhindert das Flackern im Customizer.
wp_localize_script( wp_localize_script(
'minecraft-modern-header-script', // <-- Richtiges Skript-Handle! 'minecraft-modern-header-script', // <-- Richtiges Skript-Handle!
@@ -123,6 +122,9 @@ add_action( 'wp_enqueue_scripts', 'minecraft_modern_scripts' );
// === Customizer-Datei laden === // === Customizer-Datei laden ===
require get_template_directory() . '/inc/customizer.php'; require get_template_directory() . '/inc/customizer.php';
// === Theme-Updater-Datei laden ===
require get_template_directory() . '/inc/theme-updater.php';
// === Footer-Widgets registrieren === // === Footer-Widgets registrieren ===
function minecraft_modern_footer_widgets() { function minecraft_modern_footer_widgets() {
register_sidebar( array( register_sidebar( array(
@@ -199,7 +201,7 @@ function create_faq_post_type() {
add_action('init', 'create_faq_post_type'); add_action('init', 'create_faq_post_type');
// ============================================================================= // =============================================================================
// NEU: Automatische "Home" Seitenerstellung und Zuweisung (kombiniert) // ===== Automatische "Home" Seitenerstellung und Zuweisung (kombiniert) =======
// ============================================================================= // =============================================================================
/** /**
@@ -300,7 +302,7 @@ add_filter( 'template_include', 'load_faq_page_template' );
// ========================================================================= // =========================================================================
// === CUSTOM LOGIN FUNCTIONS (KOMPLETT NEU & KORRIGIERT) ========== // === CUSTOM LOGIN FUNCTIONS =============================================
// ========================================================================= // =========================================================================
// Lädt alle notwendigen Styles und Scripts nur für die Login-Seite // Lädt alle notwendigen Styles und Scripts nur für die Login-Seite

View File

@@ -85,22 +85,9 @@ function minecraft_modern_customize_register( $wp_customize ) {
) ); ) );
// ========================================================================= // =========================================================================
// === NEU: Slider-Effekt-Einstellungen =================================== // === ENTFERNT: Slider-Effekt-Einstellungen ==============================
// ========================================================================= // =========================================================================
$wp_customize->add_setting( 'slider_effect', array( 'default' => 'fade', 'sanitize_callback' => 'sanitize_key' ) );
$wp_customize->add_control( 'slider_effect', array(
'label' => 'Slider-Effekt', 'section' => 'header_slider', 'settings' => 'slider_effect', 'type' => 'select',
'choices' => array( 'slide' => 'Horizontales Gleiten', 'fade' => 'Überblenden', 'cube' => 'Würfel-Effekt' ),
) );
$wp_customize->add_setting( 'slider_direction', array( 'default' => 'horizontal', 'sanitize_callback' => 'sanitize_key' ) );
$wp_customize->add_control( 'slider_direction', array(
'label' => 'Slider-Richtung (nur für "Gleiten")', 'section' => 'header_slider', 'settings' => 'slider_direction', 'type' => 'select',
'choices' => array( 'horizontal' => 'Horizontal', 'vertical' => 'Vertikal' ),
) );
// --- Sektion: Startseiten-Hero (Fallback) --- // --- Sektion: Startseiten-Hero (Fallback) ---
$wp_customize->add_section( 'hero_section', array( $wp_customize->add_section( 'hero_section', array(
'title' => 'Startseiten-Hero (wenn Slider deaktiviert)', 'title' => 'Startseiten-Hero (wenn Slider deaktiviert)',

View File

@@ -0,0 +1,125 @@
<?php
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// === ZENTRALE VERSIONSKONSTANTE ===
// Bitte passen Sie diese Version bei jedem Release an!
define( 'MINECRAFT_MODERN_THEME_VERSION', '1.4' );
// === THEME UPDATE NOTIFICATION SYSTEM ===
// Funktion zum Abrufen der neuesten Release-Informationen vom Git-Repository
function minecraft_modern_get_latest_release_info() {
$transient_key = 'minecraft_modern_latest_release';
// Versuche, die Daten aus dem Transient-Cache zu holen
$release_info = get_transient($transient_key);
// Wenn der Cache leer oder abgelaufen ist, rufe neue Daten ab
if (false === $release_info) {
$response = wp_remote_get('https://git.viper.ipv64.net/api/v1/repos/M_Viper/Minecraft-Modern-Theme/releases/latest');
if (!is_wp_error($response) && 200 === wp_remote_retrieve_response_code($response)) {
$body = wp_remote_retrieve_body($response);
$release_data = json_decode($body, true);
if ($release_data && isset($release_data['tag_name'])) {
$release_info = array(
'version' => $release_data['tag_name'],
'download_url' => $release_data['zipball_url'],
'release_notes' => isset($release_data['body']) ? $release_data['body'] : '',
'published_at' => isset($release_data['published_at']) ? $release_data['published_at'] : ''
);
// Speichere die Daten für 12 Stunden im Cache
set_transient($transient_key, $release_info, 12 * HOUR_IN_SECONDS);
}
} else {
// Bei Fehler, leere Daten für 1 Stunde cachen, um wiederholte fehlgeschlagene Anfragen zu vermeiden
set_transient($transient_key, array(), HOUR_IN_SECONDS);
}
}
return $release_info;
}
// Funktion zum Anzeigen der Update-Benachrichtigung im Admin-Bereich
function minecraft_modern_show_update_notification() {
// Nur im Admin-Bereich und für Administratoren anzeigen
if (!is_admin() || !current_user_can('manage_options')) {
return;
}
// Aktuelle Theme-Version abrufen (JETZT AUS UNSERER KONSTANTE)
$current_version = MINECRAFT_MODERN_THEME_VERSION;
// Neueste Release-Informationen abrufen
$latest_release = minecraft_modern_get_latest_release_info();
// Wenn wir gültige Release-Informationen haben und die Versionen unterschiedlich sind
if (!empty($latest_release) && isset($latest_release['version']) && version_compare($current_version, $latest_release['version'], '<')) {
?>
<div class="notice notice-warning is-dismissible">
<h3><?php _e('Minecraft Modern Theme Update Available', 'minecraft-modern-theme'); ?></h3>
<p>
<?php
printf(
__('You are using version %1$s of the Minecraft Modern Theme. Version %2$s is now available.', 'minecraft-modern-theme'),
'<strong>' . esc_html($current_version) . '</strong>',
'<strong>' . esc_html($latest_release['version']) . '</strong>'
);
?>
</p>
<p>
<a href="<?php echo esc_url($latest_release['download_url']); ?>" class="button button-primary" target="_blank">
<?php _e('Download Latest Version', 'minecraft-modern-theme'); ?>
</a>
<a href="https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme/releases" class="button" target="_blank">
<?php _e('View Release Notes', 'minecraft-modern-theme'); ?>
</a>
</p>
</div>
<?php
}
}
add_action('admin_notices', 'minecraft_modern_show_update_notification');
// Funktion zum Hinzufügen eines Update-Status-Widgets zum Dashboard
function minecraft_modern_add_dashboard_widget() {
wp_add_dashboard_widget(
'minecraft_modern_update_widget', // Widget slug.
'Minecraft Modern Theme Status', // Title.
'minecraft_modern_update_widget_function' // Display function.
);
}
add_action('wp_dashboard_setup', 'minecraft_modern_add_dashboard_widget');
// Funktion zum Anzeigen des Inhalts im Dashboard-Widget
function minecraft_modern_update_widget_function() {
// Aktuelle Theme-Version abrufen (JETZT AUS UNSERER KONSTANTE)
$current_version = MINECRAFT_MODERN_THEME_VERSION;
// Neueste Release-Informationen abrufen
$latest_release = minecraft_modern_get_latest_release_info();
echo '<p><strong>' . __('Current Version:', 'minecraft-modern-theme') . '</strong> ' . esc_html($current_version) . '</p>';
if (!empty($latest_release) && isset($latest_release['version'])) {
if (version_compare($current_version, $latest_release['version'], '<')) {
echo '<p><strong>' . __('Latest Version:', 'minecraft-modern-theme') . '</strong> <span style="color: #d63638;">' . esc_html($latest_release['version']) . '</span></p>';
echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> <span style="color: #d63638;">' . __('Update Available', 'minecraft-modern-theme') . '</span></p>';
echo '<p><a href="' . esc_url($latest_release['download_url']) . '" class="button button-primary" target="_blank">' . __('Download Update', 'minecraft-modern-theme') . '</a></p>';
} else {
echo '<p><strong>' . __('Latest Version:', 'minecraft-modern-theme') . '</strong> <span style="color: #46b450;">' . esc_html($latest_release['version']) . '</span></p>';
echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> <span style="color: #46b450;">' . __('Up to Date', 'minecraft-modern-theme') . '</span></p>';
}
} else {
echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> ' . __('Unable to check for updates', 'minecraft-modern-theme') . '</p>';
}
echo '<p><a href="https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme/releases" target="_blank">' . __('View All Releases', 'minecraft-modern-theme') . '</a></p>';
}

View File

@@ -1,65 +1,52 @@
<!DOCTYPE html> document.addEventListener('DOMContentLoaded', function() {
<html <?php language_attributes(); ?>> // Hole den Slider-Container
<head> const heroSlider = document.querySelector('.hero-slider');
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<header id="masthead" class="site-header">
<div class="container">
<div class="header-main">
<div class="site-branding">
<?php
if ( function_exists( 'the_custom_logo' ) && has_custom_logo() ) {
the_custom_logo();
}
?>
<?php
if ( is_front_page() && is_home() ) : // Stelle sicher, dass der Slider auf der Seite existiert
?> if (!heroSlider) {
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1> return;
<?php else : ?> }
<p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
<?php endif; ?>
</div>
<nav id="site-navigation" class="main-navigation">
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'container' => false ) ); ?>
</nav>
<div class="header-info">
<div class="social-links">
<?php
// Array mit den Social-Media-Plattformen und ihren Font Awesome Klassen
$social_icons = array(
'discord' => 'fab fa-discord',
'youtube' => 'fab fa-youtube',
'twitter' => 'fab fa-x-twitter', // Neues Icon für Twitter/X
'facebook' => 'fab fa-facebook-f',
'instagram' => 'fab fa-instagram',
'tiktok' => 'fab fa-tiktok',
'twitch' => 'fab fa-twitch',
'steam' => 'fab fa-steam',
'github' => 'fab fa-github',
'linkedin' => 'fab fa-linkedin-in',
'pinterest' => 'fab fa-pinterest-p',
'reddit' => 'fab fa-reddit-alien',
'teamspeak' => 'fab fa-teamspeak',
'spotify' => 'fab fa-spotify'
);
// Schleife, die alle verfügbaren Icons durchgeht // Konfiguration für den Slider vorbereiten
foreach ($social_icons as $key => $class) { const swiperConfig = {
// Prüfen, ob für diese Plattform eine URL im Customizer hinterlegt wurde // Der Effekt ist jetzt fest auf "Überblenden" eingestellt
if (get_theme_mod('social_' . $key)) { effect: 'fade',
// Wenn ja, Link und Icon ausgeben fadeEffect: {
echo '<a href="' . esc_url(get_theme_mod('social_' . $key)) . '" target="_blank"><i class="' . esc_attr($class) . '"></i></a>'; crossFade: true
} },
}
?> // Loop-Einstellung ist jetzt DYNAMISCH
</div> loop: sliderSettings.loop === '1',
</div>
</div> // Autoplay
</div> autoplay: {
</header> delay: 5000,
disableOnInteraction: false,
},
pauseOnMouseEnter: true,
// Prüfe, ob die Pfeile NICHT ausgeblendet werden sollen
navigation: sliderSettings.hideArrows !== '1' ? {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
} : false,
// Prüfe, ob die Paginierung NICHT ausgeblendet werden soll
pagination: sliderSettings.hidePagination !== '1' ? {
el: '.swiper-pagination',
clickable: true,
} : false,
on: {
init: function () {
setTimeout(() => {
heroSlider.classList.add('swiper-initialized');
}, 50);
},
},
};
// Initialisiere den Slider mit der konfigurierten Optionen
new Swiper('.hero-slider', swiperConfig);
});

View File

@@ -4,7 +4,7 @@ Theme URI: https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme
Author: M_Viper Author: M_Viper
Description: Ein modernes Gaming-Theme mit konfigurierbarem Header-Slider. Description: Ein modernes Gaming-Theme mit konfigurierbarem Header-Slider.
Author URI: https://M-Viper.de Author URI: https://M-Viper.de
Version: 1.2 Version: 1.3
License: GNU General Public License v2 or later License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: minecraft-modern-theme Text Domain: minecraft-modern-theme