attendi
<?php
// Creiamo lo shortcode [wpc_gallery]
add_shortcode('wpc_gallery', 'crea_galleria_wpc');
function crea_galleria_wpc() {
ob_start();
?>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/glightbox/dist/css/glightbox.min.css" />
<style>
.wpc-gallery {
column-count: 3;
column-gap: 15px;
max-width: 1200px;
margin: 0 auto;
padding: 20px 0;
}
.wpc-gallery-item {
break-inside: avoid;
margin-bottom: 15px;
border-radius: 8px;
overflow: hidden;
display: block;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.wpc-gallery-item img {
width: 100%;
height: auto;
display: block;
transition: transform 0.5s ease;
}
@media (hover: hover) {
.wpc-gallery-item:hover {
transform: translateY(-5px);
box-shadow: 0 8px 15px rgba(0,0,0,0.2);
}
.wpc-gallery-item:hover img {
transform: scale(1.05);
}
}
@media (max-width: 900px) {
.wpc-gallery { column-count: 2; }
}
@media (max-width: 600px) {
.wpc-gallery { column-count: 1; }
}
</style>
<div class="wpc-gallery">
<?php
// 2. Logica PHP per WordPress (PERCORSI CORRETTI)
// Percorso fisico sul server (senza "uploads")
$server_path = ABSPATH . 'wp-content/wpc-gallery/';
// Percorso URL pubblico per le immagini (senza "uploads")
$public_url = site_url('/wp-content/wpc-gallery/');
// Cerca le immagini nel server
$images = glob($server_path . "*.{jpg,jpeg,png,webp}", GLOB_BRACE);
if ($images) {
foreach ($images as $image_path) {
$fileInfo = pathinfo($image_path);
// Nome pulito per l'attributo ALT
$filename = $fileInfo['filename'];
$cleanName = str_replace('-', ' ', $filename);
$altText = ucfirst($cleanName);
// Costruisci l'URL pubblico dell'immagine
$image_url = $public_url . $fileInfo['basename'];
// Stampa l'HTML usando le funzioni di sicurezza di WordPress
echo '
<a href="' . esc_url($image_url) . '" class="glightbox wpc-gallery-item" data-gallery="wpc" data-title="' . esc_attr($altText) . '">
<img src="' . esc_url($image_url) . '" alt="' . esc_attr($altText) . '" loading="lazy">
</a>';
}
} else {
// Messaggio di debug aggiornato per confermare dove sta cercando
echo '<p>Nessuna immagine trovata nella cartella: ' . esc_html($server_path) . '</p>';
}
?>
</div>
<script src="https://cdn.jsdelivr.net/gh/mcstudios/glightbox/dist/js/glightbox.min.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
if(typeof GLightbox !== 'undefined') {
const lightbox = GLightbox({
selector: '.glightbox',
touchNavigation: true,
loop: true,
zoomable: true
});
}
});
</script>
<?php
return ob_get_clean();
}