Upload mc-multiserver-gallery-pro.php via GUI
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
Plugin Name: MC MultiServer Gallery PRO
|
||||
Description: Professionelle Minecraft-Galerie mit Ingame-Verification, modernem UI, Lightbox und AJAX-Upload (multi-server fähig).
|
||||
Version: 2.5.2
|
||||
Version: 2.5.3
|
||||
Author: M_Viper
|
||||
Text Domain: mc-multiserver-gallery-pro
|
||||
Domain Path: /languages
|
||||
@@ -88,4 +88,112 @@ if (class_exists('MC_Gallery_Core')) {
|
||||
}
|
||||
if (class_exists('MC_Gallery_Shortcodes')) {
|
||||
add_action('plugins_loaded', ['MC_Gallery_Shortcodes', 'init']);
|
||||
}
|
||||
}
|
||||
|
||||
/* ================= SIDEBAR WIDGET: BILD DES TAGES ================= */
|
||||
class MC_Daily_Image_Widget extends WP_Widget {
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct(
|
||||
'mc_daily_image_widget',
|
||||
'MC Bild des Tages',
|
||||
array( 'description' => 'Zeigt jeden Tag ein anderes, zufälliges Bild aus allen MC Galerien an.' )
|
||||
);
|
||||
}
|
||||
|
||||
// Frontend-Ausgabe
|
||||
public function widget( $args, $instance ) {
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : 'Bild des Tages';
|
||||
|
||||
echo $args['before_widget'];
|
||||
if ( ! empty( $title ) ) {
|
||||
echo $args['before_title'] . apply_filters( 'widget_title', $title ) . $args['after_title'];
|
||||
}
|
||||
|
||||
// 1. Eindeutiger Key für heute (z.B. mc_daily_image_2023-10-27)
|
||||
$today_key = 'mc_daily_image_' . date('Y-m-d');
|
||||
|
||||
// 2. Prüfen, ob wir heute schon ein Bild ausgewählt haben
|
||||
$image_id = get_transient( $today_key );
|
||||
|
||||
// Falls kein Bild für heute im Cache ist:
|
||||
if ( false === $image_id ) {
|
||||
|
||||
// Alle MC Galerien finden
|
||||
$galleries = get_posts([
|
||||
'post_type' => 'mc_gallery',
|
||||
'numberposts' => -1,
|
||||
'fields' => 'ids',
|
||||
'post_status' => 'publish'
|
||||
]);
|
||||
|
||||
if ( ! empty( $galleries ) ) {
|
||||
// Ein zufälliges Bild aus diesen Galerien holen
|
||||
$random_image = get_posts([
|
||||
'post_type' => 'attachment',
|
||||
'post_mime_type' => 'image',
|
||||
'post_parent__in'=> $galleries,
|
||||
'numberposts' => 1,
|
||||
'orderby' => 'rand', // Zufällig wählen
|
||||
'suppress_filters' => false
|
||||
]);
|
||||
|
||||
if ( ! empty( $random_image ) ) {
|
||||
$image_id = $random_image[0]->ID;
|
||||
// Das Bild für 24 Stunden (bis morgen) speichern
|
||||
set_transient( $today_key, $image_id, DAY_IN_SECONDS );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Bild anzeigen (wird aus Cache oder neu geladen)
|
||||
if ( $image_id && wp_attachment_is_image( $image_id ) ) {
|
||||
|
||||
$img_src = wp_get_attachment_image_src( $image_id, 'medium' );
|
||||
$full_src = wp_get_attachment_image_src( $image_id, 'full' );
|
||||
|
||||
if ( $img_src ) {
|
||||
?>
|
||||
<div class="mc-daily-image-container" style="text-align: center;">
|
||||
<a href="<?php echo esc_url( $full_src[0] ); ?>" target="_blank" title="Vollbild anzeigen">
|
||||
<img src="<?php echo esc_url( $img_src[0] ); ?>" alt="MC Bild des Tages" style="max-width: 100%; height: auto; border-radius: 4px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);" />
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
echo '<p style="text-align:center; color:#888;">Keine Bilder verfügbar.</p>';
|
||||
}
|
||||
|
||||
echo $args['after_widget'];
|
||||
}
|
||||
|
||||
// Backend Formular
|
||||
public function form( $instance ) {
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : 'Bild des Tages';
|
||||
?>
|
||||
<p>
|
||||
<label for="<?php echo $this->get_field_id( 'title' ); ?>">Titel:</label>
|
||||
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>"
|
||||
name="<?php echo $this->get_field_name( 'title' ); ?>" type="text"
|
||||
value="<?php echo esc_attr( $title ); ?>">
|
||||
</p>
|
||||
<p class="description" style="font-size: 0.9em; color: #666;">
|
||||
Dieses Widget wählt einmal pro Tag (um 00:00 Uhr) ein zufälliges Bild aus allen Spieler-Galerien aus und zeigt es an. Der Bildtext ist ausgeblendet.
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
|
||||
// Speichern der Einstellungen
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
$instance = array();
|
||||
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : 'Bild des Tages';
|
||||
return $instance;
|
||||
}
|
||||
}
|
||||
|
||||
// Widget registrieren
|
||||
function mc_register_daily_image_widget() {
|
||||
register_widget( 'MC_Daily_Image_Widget' );
|
||||
}
|
||||
add_action( 'widgets_init', 'mc_register_daily_image_widget' );
|
||||
Reference in New Issue
Block a user