Lightbox - JLG est un plugin WordPress qui transforme automatiquement les galeries d'images en visionneuse immersive et pleine page.
- Nom : Lightbox - JLG
- Rôle : Créer une visionneuse plein écran pour les images reliées à leur média.
- Auteur : Jérôme Le Gousse
- Version : 1.8.1
- Téléchargez ou clonez ce dépôt dans
wp-content/plugins/. - Depuis le dossier
wp-content/plugins/ma-galerie-automatique/, exécutezcomposer install --no-devafin de récupérer le SDK Google et les dépendances PHP du plugin. - Dans l'administration WordPress, rendez-vous dans Extensions → Ajouter puis activez Lightbox - JLG.
- Accédez aux paramètres via Réglages → Ma Galerie Automatique.
Le dossier vendor/ généré par Composer est ignoré dans Git : pensez à lancer composer install --no-dev avant de créer une archive ZIP ou de déployer l'extension pour inclure le SDK Google.
En cas de notice « Le SDK Google est indisponible » dans l'administration, vérifiez que composer install --no-dev a bien été exécuté et que WordPress dispose des droits d'écriture nécessaires dans le dossier vendor/ du plugin.
- Compteur, titre et légende dynamiques : la barre de titre affiche le numéro de la diapositive courante, la légende ou, à défaut, l’attribut alt du média.
- Lecture/Pause chronométrée : le bouton principal combine lecture/pause et minuterie circulaire pour visualiser la prochaine transition.
- Miniatures synchronisées : un carrousel de vignettes met en avant la diapositive active et accepte clics comme gestes tactiles.
- Fond immersif : le style d’arrière-plan (
echo,bluroutexture) et le préchargement des visuels améliorent la perception de profondeur. - Fermeture facilitée : un clic sur l’arrière-plan ou la touche Échap referme la visionneuse.
- Vitesse et délai personnalisables : définissez l’intervalle entre deux images et la vitesse de transition.
- Effets Swiper : choisissez entre
slide,fade,cube,coverflowouflip, puis ajustez l’easing et la durée pour coller au ton du site.【F:ma-galerie-automatique/includes/Admin/Settings.php†L265-L290】【F:ma-galerie-automatique/includes/Admin/Settings.php†L400-L459】 - Lecture en boucle et démarrage automatique : activez la boucle infinie ou l’autoplay dès l’ouverture.
- Démarrage sur l’image cliquée : lancez le diaporama directement sur la miniature sélectionnée pour respecter le contexte de lecture.【F:ma-galerie-automatique/includes/admin-page-template.php†L250-L256】
- Zoom progressif : basculez le zoom Swiper pour inspecter une image dans ses moindres détails.【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L482-L520】
- Téléchargement rapide : déclenchez le téléchargement du visuel en haute résolution via un simple bouton.【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L496-L514】
- Plein écran natif : activez le mode plein écran des navigateurs et offrez une expérience cinématographique.【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L520-L558】
- Affichage sélectif : chaque bouton (zoom, téléchargement, partage, plein écran, miniatures mobiles) peut être activé ou masqué depuis l’interface d’administration.【F:ma-galerie-automatique/includes/Admin/Settings.php†L282-L288】【F:ma-galerie-automatique/includes/admin-page-template.php†L297-L333】
- Bouton de partage contextuel : la barre d’outils ajoute automatiquement un bouton si au moins une action est disponible (canal social, copie, téléchargement rapide ou partage natif).【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L400-L520】
- Modale de partage accessible : la fenêtre dédiée gère le focus clavier, fournit des retours visuels et propose les options actives pour l’image en cours.【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L780-L900】
- Canaux entièrement configurables : l’interface d’administration permet d’ajouter, réordonner, activer/désactiver et personnaliser icône, libellé ou modèle d’URL de chaque canal.【F:ma-galerie-automatique/includes/admin-page-template.php†L330-L520】【F:ma-galerie-automatique/assets/js/src/admin.js†L1368-L1416】
- Copie, téléchargement et partage natif : au-delà des réseaux sociaux, les actions de copie dans le presse-papiers, de téléchargement et d’appel à
navigator.sharepeuvent être activées individuellement.【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L400-L520】【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L780-L900】
- Analyse Gutenberg et HTML brut : le moteur détecte les images liées au média à partir des blocs WordPress (galerie, image, cover, requête, etc.) ou via une expression régulière sur le contenu filtré.【F:ma-galerie-automatique/includes/Content/Detection.php†L142-L200】
- Sources
<picture>intelligentes : les balises<source>sont évaluées comme les<img>afin d’ignorer les placeholders vides tout en détectant les attributssrcsetou personnalisés via le filtremga_picture_source_attributes.【F:ma-galerie-automatique/includes/Content/Detection.php†L1484-L1625】【F:tests/phpunit/DetectionHtmlParsingTest.php†L115-L166】 - Sélecteurs personnalisés : complétez la liste de conteneurs à scanner pour couvrir des structures de thème spécifiques, ou activez un repli sur
<body>en cas d’architecture atypique.【F:ma-galerie-automatique/includes/Admin/Settings.php†L291-L295】【F:ma-galerie-automatique/includes/admin-page-template.php†L259-L295】 - Archives et types de contenu ciblés : choisissez les post types surveillés et, si nécessaire, scannez également les pages d’archives pour charger la visionneuse sur les listes d’articles.【F:ma-galerie-automatique/includes/Admin/Settings.php†L294-L295】【F:ma-galerie-automatique/includes/admin-page-template.php†L266-L279】【F:ma-galerie-automatique/includes/Content/Detection.php†L212-L262】
- CDN intelligents : les URLs générées par des proxys ou services d’optimisation d’image (Next.js
_next/image, Imgix, etc.) sont reconnues même sans extension de fichier grâce à l’analyse des paramètres de requête.【F:ma-galerie-automatique/includes/Content/Detection.php†L1072-L1180】 - Bloc réutilisable et cache : la détection suit les références de blocs réutilisables tout en mémorisant les IDs déjà visités pour limiter les boucles infinies.【F:ma-galerie-automatique/includes/Content/Detection.php†L265-L323】
- Bloc « Lightbox – Aperçu » : Gutenberg dispose d’un bloc de prévisualisation qui reproduit les styles frontaux et expose les réglages synchronisés avec l’interface publique.【F:ma-galerie-automatique/includes/Plugin.php†L157-L245】
- Paramètres injectés : les valeurs par défaut et celles enregistrées sont sérialisées en JavaScript pour offrir une prévisualisation fidèle côté éditeur.【F:ma-galerie-automatique/includes/Plugin.php†L180-L205】
- Panneau d’analyse : un panneau flottant liste le temps écoulé, l’état de l’autoplay et les événements récents pour aider au diagnostic.【F:ma-galerie-automatique/assets/js/debug.js†L200-L259】
- Forçage de galerie test : un bouton ajoute une galerie de démonstration instantanée pour reproduire les scénarios en un clic.【F:ma-galerie-automatique/assets/js/debug.js†L295-L323】
- Journal de partage : chaque action de partage déclenche une entrée dédiée, utile pour vérifier l’assemblage des URLs et des métadonnées.【F:ma-galerie-automatique/assets/js/debug.js†L262-L283】
- Traductions : le chargement du domaine de traduction tente d’abord la méthode WordPress standard, puis retombe sur un fichier
.moencodé en base64 lorsque le dossierlanguagesest indisponible.【F:ma-galerie-automatique/includes/Translation/Manager.php†L9-L76】 - Gestion des dépendances : Swiper (CSS/JS) est servi en local ou via CDN selon disponibilité, avec gestion conditionnelle des attributs SRI et d’un rafraîchissement automatique après mise à jour du plugin.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L26-L205】
- Chargement modulaire des assets : la visionneuse enregistre désormais chaque module (coeur, partage, debug) via
wp_register_*, ajoute automatiquement despreconnect/dns-prefetchvers le CDN Swiper et n’enfile la feuillegallery-share.cssque lorsque le partage est actif. Le filtremga_frontend_asset_modulespermet d’ajuster les bundles chargés selon le contexte ou un thème enfant.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L35-L433】【F:ma-galerie-automatique/assets/css/gallery-share.css†L1-L98】 - Variables dynamiques : la taille des miniatures, la couleur d’accent et l’opacité du fond sont injectées via CSS personnalisé pour s’aligner sur les réglages actifs.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L220-L304】
- Cache persistant des traductions : un gestionnaire dédié décode les
.moencodés en base64 dans un cache uploads (wp-content/uploads/mga-translations/) et réutilise les fichiers tant que le hash source reste identique, ce qui limite les lectures disque à chaque requête.【F:ma-galerie-automatique/includes/Translation/Manager.php†L9-L108】 - Notifications de rafraîchissement Swiper : l’action
mga_swiper_asset_sources_refreshedexpose désormais le contexte (activation, mise à jour, assets manquants, rafraîchissement planifié) et la valeur précédente pour simplifier l’observabilité en production.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L395-L418】
- Éditez une page ou un article.
- Insérez une galerie et liez chaque image à son fichier média.
- Visitez la page et cliquez sur une image : la visionneuse pleine page s’ouvre automatiquement.
<a href="image-large.jpg"><img src="image-large.jpg" alt="Exemple" /></a>- Expérience utilisateur riche : le module de partage entièrement configurable, la gestion du zoom, du téléchargement et du plein écran couvrent la plupart des usages rencontrés dans les extensions haut de gamme (par ex. Envira Gallery, Modula Pro).【F:ma-galerie-automatique/includes/admin-page-template.php†L297-L520】【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L400-L900】
- Intégration Gutenberg poussée : la synchronisation des réglages entre le front et le bloc d’aperçu limite les surprises visuelles et accélère les phases de maquettage.【F:ma-galerie-automatique/includes/Plugin.php†L157-L245】
- Outils de diagnostic : le mode débogage embarqué fournit des métriques et des journaux que l’on retrouve rarement en standard dans les plugins de lightbox commerciaux.【F:ma-galerie-automatique/assets/js/debug.js†L200-L323】
- Respect de l’accessibilité : le panneau de partage gère la navigation clavier et le focus de manière explicite, un point que seuls les éditeurs premium comme FooGallery ou NextGEN soignent systématiquement.【F:ma-galerie-automatique/assets/js/src/gallery-slideshow.js†L780-L900】
- Analyse de contenu plus robuste : la détection repose sur une expression régulière générique et des parcours bloc par bloc ; l’adoption d’un parseur DOM tolérant (comme le font Envira ou NextGEN), d’heuristiques par bloc et d’un cache différencié réduirait les faux positifs tout en améliorant les performances sur les gros sites.【F:ma-galerie-automatique/includes/Content/Detection.php†L142-L200】【F:ma-galerie-automatique/includes/Content/Detection.php†L265-L323】
- Chargement conditionnel des assets : Swiper, les styles et le script principal sont toujours enfilés lorsque la détection passe, sans différenciation par fonctionnalité. Un découpage modulaire (miniatures, partage, debug) et l’utilisation de
wp_register_*, comme le proposent FooGallery ou Modula via leurs add-ons, faciliteraient les surcharges par les thèmes et réduiraient la dette de performance.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L23-L177】 - Bloc éditeur plus complet : le bloc
lightbox-previewne définit ni script de vue ni rendu dynamique ; synchroniser les réglages via l’API REST et proposer une prévisualisation frontale alignée sur l’affichage public éviterait les divergences constatées dans certains thèmes premium, à l’image des blocs personnalisés fournis par Envira Gallery ou Kadence Blocks.【F:ma-galerie-automatique/includes/Plugin.php†L157-L245】 - Purge de cache ciblée : un simple
delete_post_meta_by_keyinvalide tous les caches d’images liées à la moindre variation de réglage. Segmenter par type de contenu ou par langue, voire déclencher une purge différée comme le font les suites pro multi-sites, réduirait les recalculs massifs observés en production.【F:ma-galerie-automatique/includes/Plugin.php†L247-L266】 - Gestion des traductions optimisée : le fallback
.moencodé en base64 déclenche des lectures/écritures disque à chaque chargement et n’intègre pas les hooksswitch_locale. Un service d’internationalisation dédié, couplé à l’APIWP_Filesystem, alignerait le fonctionnement sur les pratiques des solutions professionnelles (WPML, Polylang).【F:ma-galerie-automatique/includes/Plugin.php†L66-L119】 - Monétisation et différenciation : proposer une feuille de route Freemium (packs de modèles de lightbox, intégrations WooCommerce ou Elementor) clarifierait le positionnement face aux références commerciales et offrirait un cadre d’évolution durable.
| Axe | Objectifs mesurables | Actions clés | Indicateurs de succès | Équipe / dépendances |
|---|---|---|---|---|
| Analyse de contenu | • Diminuer de 50 % les faux positifs signalés en support • Réduire le temps moyen de détection d’une page de 30 % |
1. Intégrer un parseur HTML5 tolérant (ex. masterminds/html5).2. Cartographier les blocs ( core/gallery, core/image, etc.) et définir une heuristique dédiée par type.3. Mettre en cache les résultats par post ID + langue via transients ou objet-cache. 4. Couvrir les nouveaux parcours via tests E2E Playwright et tests unitaires PHP. |
• Taux d’erreur des tickets support • Temps de génération moyen des galeries dans Query Monitor |
Core PHP + QA (tests E2E) |
| Assets conditionnels | • Baisser de 40 % le poids initial CSS/JS sur une page simple • Offrir un hook de substitution par module |
1. Refactoriser enqueue_assets pour utiliser wp_register_script/style par fonctionnalité (cœur, miniatures, partage, debug).2. Ajouter une option d’admin pour activer/désactiver chaque module et refléter l’état côté front. 3. Implémenter une logique de lazy-loading ( IntersectionObserver) pour les miniatures optionnelles.4. Documenter les nouveaux hooks dans la section « Hooks et personnalisation ». |
• Poids total des assets mesuré via WebPageTest • Utilisation des hooks de substitution dans les thèmes partenaires |
Frontend + Perf |
| Bloc éditeur | • Obtenir une prévisualisation 1:1 vs. front sur 3 thèmes de référence • Couvrir 100 % des réglages critiques dans le bloc |
1. Extraire un store REST dédié (/mga/v1/settings) pour synchroniser les réglages.2. Ajouter un viewScript et un render_callback afin d’aligner la sortie du bloc sur la visionneuse publique.3. Définir des contrôles React (presets, effets, couleurs) avec aperçu instantané. 4. Créer des tests Jest + Playwright pour valider les scénarios Gutenberg. |
• Résultats des tests UI • Retours bêta testeurs éditeurs |
JS/Gutenberg + QA |
| Purge de cache | • Ramener le temps de purge complet < 2 s sur un site 1 000 posts • Éviter 90 % des purges inutiles |
1. Segmenter les metas de cache par post type/langue. 2. Implémenter une file différée (WP-Cron) pour les purges massives. 3. Ajouter des logs (action scheduler ou CPT) pour tracer les invalidations. 4. Étendre les tests PHPUnit existants pour couvrir les nouveaux scénarios. |
• Temps de purge mesuré en staging • Nombre de purges différées vs. immédiates |
Core PHP + Ops |
| Internationalisation | • Supporter switch_locale et les multisites sans perte de traduction• Réduire les E/S disque de 80 % |
1. Isoler la logique dans un service TranslationManager injectable.2. Migrer le fallback base64 vers des fichiers temporaires gérés via WP_Filesystem.3. Introduire un cache mémoire (objet-cache) par combinaison texte/langue. 4. Documenter les hooks pour permettre aux agences de fournir leurs propres packs linguistiques. |
• Logs I/O serveur • Tests automatisés switch_to_locale |
Core PHP |
| Monétisation | • Formaliser une offre Freemium en 2 trimestres • Obtenir 3 partenariats intégrateurs pilotes |
1. Définir des bundles de fonctionnalités (gratuit vs. premium) et préparer le licensing. 2. Prioriser les intégrations WooCommerce/Elementor en s’appuyant sur le refactor des assets. 3. Concevoir des templates premium (thèmes lightbox) et un pipeline de livraison (ZIP auto). 4. Préparer la documentation marketing (FAQ, fiches comparatives). |
• Conversion Freemium • Nombre de partenaires pilotes |
Produit + Marketing |
- Images responsives optimisées : exploiter
srcset/sizespour choisir automatiquement la bonne résolution dans la lightbox et en arrière-plan limiterait la consommation de bande passante sur mobile tout en préservant la netteté sur les écrans haute densité. - Statistiques d’usage intégrées : exposer des hooks et un tableau de bord basique (clics, partages, lecture automatique) aiderait les administrateurs à identifier les contenus qui performent et à ajuster leurs réglages de diffusion.
- Mode accessibilité renforcé : proposer un preset de réglages « haute accessibilité » (contrastes élevés, animations réduites, focus visuels persistants) faciliterait la mise en conformité immédiate pour les sites soumis au RGAA/WCAG.
- Phase performance : implémenter le chargement conditionnel des assets et un cache de détection basé sur les IDs de blocs pour se rapprocher des temps de réponse des suites pro.
- Phase expérience éditeur : enrichir le bloc Gutenberg avec prévisualisation temps réel, contrôles de colonnes et presets partage/toolbar directement importables.
- Phase intégrations avancées : ouvrir des hooks dédiés pour WooCommerce, ACF et les constructeurs de pages afin de rivaliser avec les intégrations profondes proposées par Modula ou NextGEN.
- Phase offre commerciale : décliner des bundles de thèmes/skins, documenter les APIs et préparer des plans de support (SLA, base de connaissances) alignés avec les attentes des clients professionnels.
Le modèle de la page d’administration se trouve dans includes/admin-page-template.php et est chargé automatiquement lors de l’affichage des réglages.
wp mga cache status [--network]affiche le nombre d’entrées de cache (_mga_has_linked_images, transientsmga_det_*, sources Swiper) et leur dernière actualisation, site par site si l’option--networkest fournie.【F:ma-galerie-automatique/includes/Cli/CacheCommand.php†L18-L88】wp mga cache purge [--scope=all|detection|swiper] [--batch-size=<n>] [--network]supprime les metas et transients de détection par lots, rafraîchit l’option Swiper et remonte un résumé détaillé, avec prise en charge multisite.【F:ma-galerie-automatique/includes/Cli/CacheCommand.php†L90-L276】
- Cache multisite : la couverture unitaire s’étend désormais au hook
switch_blogpour garantir l’invalidation du cache mémoire lors d’un changement de site et prévenir les réglages incohérents sur les réseaux multisites.【F:tests/phpunit/SettingsCacheTest.php†L52-L91】 - Sources Swiper : le plugin mémorise l’origine des assets Swiper, force un rafraîchissement après mise à jour et expose un hook de notification documenté pour suivre les bascules CDN/local en production.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L395-L418】
- Fallback de traduction :
load_textdomain()s’appuie sur un cache persistant des.moencodés en Base64 ; une procédure de QA doit veiller à régénérer les fichiers encodés à chaque livraison et à vérifier les droits d’écriture surwp-content/uploads/mga-translations/.【F:ma-galerie-automatique/includes/Translation/Manager.php†L9-L108】
Les scénarios Playwright (par exemple tests/e2e/gallery-viewer.spec.ts) génèrent leurs propres images de test afin d’éviter de versionner des médias binaires. Pour vérifier la lightbox avec vos visuels, déposez simplement les fichiers dans tests/e2e/assets/ (non suivi par Git). Les formats png, jpg, jpeg, gif, webp ou avif sont pris en charge ; prévoyez au minimum deux images.
- ✅ Test vital : démarrage sur l’image cliquée — Le scénario
starts the viewer at the clicked imagevérifie que la visionneuse s’ouvre directement sur la miniature sélectionnée au lieu de revenir au début de la galerie. Cette option est essentielle à l’expérience utilisateur et doit rester fonctionnelle à chaque mise à jour.
- Détection des balises
<img>trop permissive : la méthodedom_image_node_is_meaningful()renvoietruemême si aucune source (src,data-src,srcset, etc.) n’est définie. Toute balise<img>vide est donc considérée comme valide, ce qui augmente les faux positifs côté détection et peut déclencher inutilement les assets.【F:ma-galerie-automatique/includes/Content/Detection.php†L992-L1004】 Il est recommandé de retournerfalselorsque aucun attribut pertinent n’est renseigné. - Extensions d’image limitées :
is_image_url()n’accepte que sept formats (JPG, PNG, GIF, BMP, WebP, AVIF et SVG optionnel). Les formats récents tels que HEIC/HEIF ou JPEG XL sont ignorés alors que les concurrents premium commencent à les prendre en charge.【F:ma-galerie-automatique/includes/Content/Detection.php†L780-L807】 Étendez la liste ou exposez un filtre dédié. - Enfilement monolithique des scripts :
enqueue_assets()charge systématiquement la feuille de styles et le bundle JavaScript principaux sans possibilité native de segmentation (zoom, partage, miniatures). Cette approche complique les optimisations de performance par thème ou constructeur.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L20-L142】 Introduire deswp_register_*modulaires et des contrôles par fonctionnalité rapprocherait le plugin des offres pro. - Préchargement Swiper perfectible : lorsque les fichiers locaux sont absents, le basculement vers le CDN est silencieux. Journaliser l’événement (ou exposer une notice admin) via l’action
mga_swiper_asset_sources_refreshedfaciliterait le diagnostic des installations qui oublient de publier les assets.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L35-L83】【F:ma-galerie-automatique/includes/Frontend/Assets.php†L395-L418】
- Créer un ticket pour renforcer
dom_image_node_is_meaningful()(retourfalsesi aucun attribut exploitable) et ajouter des tests unitaires couvrant des images sanssrc. - Documenter/implémenter un filtre
mga_allowed_image_extensionsafin de supporter les formats émergents sans forker le cœur. - Prototyper un découpage des bundles Swiper/visionneuse (scripts « core », « thumbs », « share », etc.) et mesurer l’impact via Lighthouse pour alimenter la roadmap performance.
Pour gagner du temps lors du maquettage, voici six presets de réglages qui s’inspirent de bibliothèques/UI kits populaires. Chacun s’appuie sur les options natives du plugin : effets, easing, dispositions des miniatures, couleurs d’accent et opacité de fond peuvent être ajustés depuis l’interface d’administration.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L422-L504】 Depuis Réglages → Ma Galerie Automatique, sélectionnez un preset dans le champ « Preset graphique », cliquez sur Appliquer ce preset puis affinez librement chaque option ou revenez aux valeurs par défaut en un clic.【F:ma-galerie-automatique/includes/admin-page-template.php†L20-L73】【F:ma-galerie-automatique/assets/js/src/admin.js†L1082-L1345】 Adaptez librement les valeurs proposées pour coller à votre direction artistique.
Le front injecte des variables CSS (--mga-thumb-size-*, --mga-accent-color, etc.) afin d’aligner l’interface avec les réglages actifs. Vous pouvez désormais compléter ou modifier ces règles en filtrant mga_dynamic_style_rules. Le callback reçoit les règles calculées par défaut, les réglages sauvegardés et leurs valeurs par défaut.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L150-L218】
add_filter( 'mga_dynamic_style_rules', function ( array $rules ) {
$rules[':root']['--mga-accent-color'] = '#ff00aa';
$rules['body.lightbox-dark'] = [
'--mga-bg-opacity' => '0.85',
];
return $rules;
} );Le plugin se charge ensuite de normaliser et d’échapper les propriétés avant d’injecter le CSS final, ce qui évite d’avoir à concaténer manuellement les chaînes de caractères.【F:ma-galerie-automatique/includes/Frontend/Assets.php†L187-L218】
- Effet :
fadepour des transitions sobres.【F:ma-galerie-automatique/includes/Admin/Settings.php†L484-L493】 - Easing :
ease-in-outafin de lisser l’entrée/sortie.【F:ma-galerie-automatique/includes/Admin/Settings.php†L495-L504】 - Miniatures : position
hiddenavec zoom activé pour laisser le focus sur l’image principale.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L295】【F:ma-galerie-automatique/includes/Admin/Settings.php†L471-L482】 - Arrière-plan : style
echoavec opacité 0,92 pour un fondu discret.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L461-L469】
- Effet :
slidepour accompagner une mise en page éditoriale.【F:ma-galerie-automatique/includes/Admin/Settings.php†L484-L493】 - Easing :
ease-outpour un ressenti nerveux mais accessible.【F:ma-galerie-automatique/includes/Admin/Settings.php†L495-L504】 - Miniatures : alignées
leftavec taille desktop 88 px / mobile 64 px pour rappeler les barres latérales modulaires.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L471-L482】 - Couleur d’accent :
#0f172a(ardoise) et opacité 0,85 pour s’harmoniser avec des interfaces sombres.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】
- Effet :
slideavec vitesse 450 ms pour conserver la perception de mouvement tout en respectant les préférences réduites.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L484-L504】 - Easing :
linearafin d’offrir une animation prévisible.【F:ma-galerie-automatique/includes/Admin/Settings.php†L495-L504】 - Miniatures :
bottom, 96 px desktop / 72 px mobile avec contraste renforcé (accent_color#2563eb).【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L471-L482】 - Barre d’actions : conserver zoom, téléchargement et partage pour répondre aux cas d’usage avancés.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L296】
- Effet :
sliderapide (350 ms) pour refléter la réactivité des composants Bootstrap.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L484-L504】 - Easing :
easecouplé à l’autoplay en pause par défaut (lecture manuelle).【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L435】【F:ma-galerie-automatique/includes/Admin/Settings.php†L495-L504】 - Couleur d’accent :
#0d6efd, opacité de fond 0,9 et miniaturesbottompour rappeler la hiérarchie visuelle classique.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L471-L482】 - CTA : garder le bouton d’appel à l’action visible afin d’encourager les interactions commerciales.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L296】
- Effet :
coverflowpour apporter une touche dynamique maîtrisée.【F:ma-galerie-automatique/includes/Admin/Settings.php†L484-L493】 - Easing :
ease-in-outet délai 5 s pour laisser respirer les visuels.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L495-L504】 - Miniatures :
bottom, 80 px desktop, 60 px mobile, accent#6435c9(violet) pour rappeler la palette Semantic.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L471-L482】 - Fond : style
blurpour souligner les transitions tout en conservant la lisibilité des légendes.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L461-L469】
- Effet :
flipavec vitesse 520 ms pour un rendu cinétique.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】【F:ma-galerie-automatique/includes/Admin/Settings.php†L484-L504】 - Easing :
ease-in-outet autoplay activé pour lancer le storytelling visuel automatiquement.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L435】【F:ma-galerie-automatique/includes/Admin/Settings.php†L495-L504】 - Couleur d’accent : gradient néon (ex.
#f97316en accent principal) et opacité 0,75 pour laisser transparaître les textures de fond.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L406】 - Miniatures :
hiddensur desktop mais visibles sur mobile (show_thumbs_mobilevrai) pour maximiser l’espace scénique tout en conservant la navigation tactile.【F:ma-galerie-automatique/includes/Admin/Settings.php†L271-L296】【F:ma-galerie-automatique/includes/Admin/Settings.php†L471-L482】
Ces filtres permettent d’adapter le comportement du plugin selon vos besoins.
Si votre thème n’utilise pas les classes habituelles comme .entry-content, .page-content ou .post-content, la détection automatique peut ignorer certaines images liées. Dans ce cas, ouvrez Réglages → Ma Galerie Automatique puis ajoutez vos propres sélecteurs CSS dans le champ Sélecteurs CSS personnalisés. Vous pouvez coller plusieurs sélecteurs séparés par des retours à la ligne, cliquer sur Ajouter un sélecteur ou utiliser la touche Entrée pour générer une nouvelle rangée à la volée. Inspectez votre page avec les outils de développement du navigateur afin d’identifier la classe englobante : le plugin combinera vos sélecteurs avec ceux fournis par défaut pour localiser les images prêtes à ouvrir la lightbox.
- Rôle : modifier l’URL de la feuille de style utilisée par Swiper (locale par défaut).
- Ressource locale : la version minifiée officielle est incluse (
ma-galerie-automatique/assets/vendor/swiper/swiper-bundle.min.css). - Moment : filtré dans
mga_enqueue_assets()au moment où les assets publics sont enfilés viawp_enqueue_scripts. - Astuce : pointez vers un CDN pour déléguer le chargement à un fournisseur externe.
add_filter( 'mga_swiper_css', fn() => 'https://cdn.example.com/swiper@11/swiper-bundle.min.css' );
- Note : lorsque l’URL finale ne correspond plus à celle fournie par défaut, les attributs SRI sont retirés automatiquement pour éviter les erreurs de validation.
- Rôle : remplacer le script JavaScript de Swiper avant son enfilement (la version locale est chargée par défaut).
- Ressource locale : la bibliothèque fournie est
ma-galerie-automatique/assets/vendor/swiper/swiper-bundle.min.js. - Moment : appelé dans
mga_enqueue_assets()juste avant l’enfilement du script Swiper côté visiteur. - Astuce : utilisez un CDN si vous préférez mutualiser la bibliothèque.
add_filter( 'mga_swiper_js', fn() => 'https://cdn.example.com/swiper@11/swiper-bundle.min.js' );
- Note : de la même manière, un script Swiper personnalisé n’embarque plus les attributs SRI par défaut.
- Rôle : ajuster ou supprimer les attributs ajoutés à la balise
<link>du Swiper CDN (intégrité,crossorigin, etc.). - Moment : appliqué dans
mga_enqueue_assets()après la résolution de l’URL finale. - Exemple : définir un nouvel hash SRI pour un CDN personnalisé.
add_filter( 'mga_swiper_css_sri_attributes', function ( array $attributes ) { return [ 'integrity' => 'sha384-...votre hash...', 'crossorigin' => 'anonymous', ]; } );
- Rôle : adapter les attributs ajoutés au
<script>de Swiper. - Moment : appelé lors de l’enfilement des scripts publics.
- Exemple : désactiver complètement la vérification SRI.
add_filter( 'mga_swiper_js_sri_attributes', '__return_empty_array' );
- Rôle : contrôler quels utilisateurs peuvent voir les outils de débogage.
- Moment : évalué dans
mga_enqueue_assets()lorsque l’option de débogage est active, juste avant l’ajout du scriptdebug.js. - Exemple : autoriser aussi les éditeurs à accéder aux informations de diagnostic.
add_filter( 'mga_user_can_view_debug', function ( $can_view ) { return $can_view || current_user_can( 'edit_others_posts' ); } );
- Rôle : forcer le chargement des assets même si aucune image éligible n’est détectée.
- Moment : appelé tout au début de
mga_should_enqueue_assets()avant les vérifications de contexte. - Compatibilité archives : lorsque l’option Analyser les archives est activée, la détection s’exécute également sur les pages de liste. Ce filtre reste prioritaire et peut toujours forcer (ou empêcher) l’enfilement selon vos besoins.
- Exemple : activer systématiquement la lightbox sur un type de contenu personnalisé.
add_filter( 'mga_force_enqueue', function ( $force, $post ) { return $post && 'portfolio' === $post->post_type ? true : $force; }, 10, 2 );
- Rôle : définir la liste des blocs Gutenberg inspectés pour trouver des images liées.
- Moment : utilisé dans
mga_should_enqueue_assets()pendant l’analyse des blocs du contenu. - Exemple : restreindre la détection aux galeries natives.
add_filter( 'mga_linked_image_blocks', fn() => [ 'core/gallery' ] );
- Rôle : ajuster le résultat final de la détection d’images utilisables.
- Moment : appliqué dans
mga_should_enqueue_assets()juste avant de retourner la décision de chargement des assets. - Exemple : exclure les pièces jointes ou d’autres contenus spécifiques.
add_filter( 'mga_post_has_linked_images', function ( $has_images, $post ) { if ( $post && 'attachment' === $post->post_type ) { return false; } return $has_images; }, 10, 2 );
- Exécutez
scripts/install-wp-tests.sh(optionnellement en passantdb-name,db-user,db-pass,db-host,wp-version). Le script télécharge WordPress Core et la librairie de tests dans.wordpress-tests/puis créewp-tests-config.phpsi nécessaire. - Vérifiez que la base de données indiquée est accessible. Si
mysqln'est pas disponible sur votre machine, créez la base manuellement avant de relancer le script. - Exportez la variable d'environnement
WP_PHPUNIT__DIRvers le dossier généré :export WP_PHPUNIT__DIR="$(pwd)/.wordpress-tests/wordpress-tests-lib"
- Lancez la suite :
phpunit -c phpunit.xml.dist
Vous pouvez ajouter des personnalisations locales sans les committer via tests/phpunit/wp-tests-config-extra.php, automatiquement inclus si présent.
Distribué sous licence GPL 2.0 ou ultérieure. Pour toute question ou suggestion, ouvrez une issue sur ce dépôt ou contactez l’auteur.
Merci de mettre à jour ce fichier README à chaque ajout de fonctionnalité ou modification majeure du plugin.