InPost Gallery
Plugin WordPress che allega un insieme di immagini a qualsiasi articolo e lo mostra tramite script di gallerie e slider guidati da shortcode.
- Prima versione
- Installazioni attive
- 700+
- Valutazione
- Leggi le recensioni
Chi sono
InPost Gallery conserva un elenco di immagini nei meta del post di qualsiasi post type abilitato e lo restituisce tramite shortcode. Ogni shortcode racchiude uno script front-end (YoxView, Fancybox, Galleria, Nivo Slider, Camera), e un sesto shortcode inserisce una singola immagine.
Gran parte dell'ingegneria sta nell'editor. Nell'editor classico (TinyMCE) gli shortcode compaiono come segnaposto cliccabili, e un doppio clic apre un modulo già compilato con gli attributi correnti dello shortcode. Il plugin non ha integrazione con l'editor a blocchi. L'elenco delle immagini è un meta box nella schermata di modifica del post. Dichiara il supporto da WordPress 3.5 ed è testato fino alla 6.9, un intervallo che comprende il cambio dell'API di TinyMCE in WordPress 3.9.
Sul front end le miniature vengono ritagliate alla dimensione richiesta al primo utilizzo e messe in cache accanto al file originale. Un'intera galleria può ridursi a una sola immagine di copertina che carica la galleria in un popup tramite AJAX, il che permette a una galleria grande di stare in un widget della barra laterale.
InPost Gallery · gallerie negli articoli
cosa è stato risolto
Editor visuale degli shortcode
nel prodottoCosa offreI redattori modificano le gallerie tramite un modulo nell'editor dei post invece di modificare i codici a mano, il che significa meno pagine danneggiate.
- Problema
- Gli shortcode con molti attributi sono difficili da modificare a mano nel contenuto del post. L'editor classico (TinyMCE) doveva mostrarli come oggetti, aprire un modulo con i loro valori correnti e riscriverli senza danneggiare il post.
- Soluzione
Un plugin TinyMCE sostituisce gli shortcode con immagini segnaposto al caricamento e li riporta in testo al salvataggio. Il modulo di modifica viene generato sul server e ottiene i suoi valori dal parser di shortcode di WordPress, eseguito in una modalità di cattura.
- Stack
Mostrare gli shortcode come oggetti modificabili nell'editor visualeBeforeSetContent sostituisce gli shortcode con segnaposto; PostProcess ripristina il testo
Il server stampa una regex costruita sulle chiavi degli shortcode registrati. Su BeforeSetContent ogni corrispondenza riceve un sc_id, il suo testo originale va in una mappa e viene sostituita da un'immagine segnaposto con l'icona dello shortcode e un riepilogo degli attributi nel titolo. Su PostProcess i segnaposto vengono ripristinati dalla mappa, quindi il post salvato contiene shortcode semplici e nulla di specifico dell'editor.
Il modulo di modifica deve aprirsi con i valori correnti dello shortcodeEseguire do_shortcode() in modalità di cattura così che WordPress analizzi gli attributi nella richiesta
In modalità di modifica get_shortcode_template() imposta un flag shortcode_mode_edit, mantiene solo il primo shortcode registrato dal testo inviato tramite get_shortcode_regex() ed esegue do_shortcode(). Il gestore dello shortcode del plugin vede il flag e memorizza gli attributi analizzati invece di generare HTML. I campi del modulo leggono poi i loro valori predefiniti tramite set_default_value(), che li sanifica.
Questo evita un secondo parser di attributi: virgolette, escape e spaziatura sono gestiti dallo stesso codice che genera lo shortcode sul front end.
Lo stato del modulo deve tornare a essere un testo shortcode validoSerializzare i campi contrassegnati come attributi; sostituire le virgolette doppie; unire i campi elenco con ^
changer() percorre ogni elemento del modulo contrassegnato con data-shortcode-field. Le virgolette doppie nei valori vengono sostituite con apici singoli in modo che non possano chiudere l'attributo. Un campo chiamato content diventa il contenuto racchiuso. I campi ripetuti contrassegnati save_as_one vengono raccolti e uniti con ^ in un unico attributo, poiché gli attributi degli shortcode non possono contenere array.
WordPress 3.9 ha cambiato l'API dei plugin TinyMCEDistribuire due build dell'editor e sceglierne una in base a $wp_version quando gli script vengono accodati
TinyMCE 4 in WordPress 3.9 ha sostituito gestori come onBeforeSetContent.add() con ed.on('BeforeSetContent'). Il plugin conserva la vecchia build in js/wp38/ e la nuova in js/, e sceglie tra le due sia per lo script di amministrazione sia per il plugin TinyMCE registrato.
Aggiungere un tipo di galleria non dovrebbe richiedere modifiche al coreShortcode individuati dai file dei template; lo stesso elenco stabilisce quali template caricare
get_shortcodes_array() analizza views/shortcodes/popups/ e registra uno shortcode per ogni nome di file. Ogni chiave ha un template front end e un template del modulo per l'editor. get_shortcode_key_folder() restituisce la cartella solo per le chiavi note, quindi i chiamanti AJAX non possono puntare l'include a un altro file, e get_shortcode_template() ripiega su inpost_gallery per i nomi sconosciuti.
Dati delle immagini e miniature
nel prodottoCosa offreMolte immagini si possono scegliere dalla libreria multimediale in una volta, un insieme può alimentare più gallerie e le miniature vengono create una sola volta, così le pagine si caricano in fretta.
- Problema
- Le immagini vengono scelte dalla libreria multimediale come URL, raggruppate e riordinate per post, e ogni shortcode chiede la propria dimensione di miniatura. Ridimensionare a ogni visualizzazione di pagina è troppo lento, e registrare una dimensione di immagine per ogni possibile impostazione di shortcode non è possibile.
- Soluzione
Le slide sono memorizzate come un unico array nei meta del post. Le miniature vengono prodotte alla prima richiesta con WP_Image_Editor e poi servite dal disco.
- Stack
Ogni galleria chiede la propria dimensione di miniaturaRidimensionare al primo utilizzo con WP_Image_Editor, salvare come name-WxH.ext, riutilizzare il file se presente
get_image() accetta un alias di dimensione come 200x150 e chiama un ridimensionatore adattato da Aqua Resizer 1.1.7. Calcola la dimensione di destinazione con image_resize_dimensions(), cerca un file name-WxH.ext esistente accanto all'originale e ne restituisce l'URL, oppure lo ridimensiona e lo salva alla prima richiesta. La classe è rinominata (Inpg_Aq_ResizePN) e avvolta in class_exists in modo che non possa entrare in conflitto con i temi che includono la libreria originale.
Selezionare molte immagini in una volta dal modale dei mediaIntercettare send_to_editor, raccogliere gli URL, aggiungere le slide con AJAX sequenziali nell'ordine di selezione
Il plugin apre il modale dei media standard e sostituisce temporaneamente window.send_to_editor. L'HTML inserito viene analizzato in un buffer nascosto per cercare destinazioni di link o sorgenti di immagini. add_meta_slide_items() richiede una slide generata alla volta e avvia la richiesta successiva nella callback, così le slide mantengono l'ordine della selezione. L'elenco è ordinabile e rinumerato dopo ogni modifica.
Le immagini di un post devono alimentare più gallerie diverseLe slide hanno un numero di gruppo; gli shortcode selezionano per gruppo, elenco di posizioni o N casuali
inpost_gallery_data è un array di slide con imgurl, title e group (da 1 a max_thumb_groups, 30 per impostazione predefinita). I template front end lo filtrano per gruppo, o per un elenco di posizioni in base 1 separate da virgola, e random=N mescola e mantiene N slide (-1 le mescola tutte).
Gallerie costruite con immagini di altri postSintassi a espressione in post_id (takebyid, take), analizzata come JSON; query preparata
Un post_id che inizia con { viene trattato come espressione. Le parentesi diventano parentesi quadre e gli apici singoli diventano virgolette doppie, poi json_decode() la analizza. takebyid prende blocchi post:count:first|last|rand dai post elencati. take seleziona gli N ultimi post pubblicati di un post type; la direzione di ordinamento è limitata a ASC o DESC e il post type e il limite sono associati con prepare().
Consegna sul front end
nel prodottoCosa offreUn'intera galleria può stare nella barra laterale come un'unica immagine cliccabile, e ogni pagina carica solo gli script di galleria che usa davvero.
- Problema
- Una galleria deve stare in un widget della barra laterale come un'unica immagine, gallerie con script diversi possono condividere una pagina, e l'endpoint AJAX che genera le gallerie è aperto ai visitatori anonimi.
- Soluzione
L'immagine di copertina porta un'istantanea serializzata degli attributi dello shortcode, e un gestore AJAX pubblico rigenera lo stesso template a partire da essa tramite il registro degli shortcode. Ogni template accoda i propri asset.
- Stack
Mostrare un'intera galleria come un'unica immagine di copertina cliccabileIstantanea degli attributi con flag popup disattivato, memorizzata come JSON in base64, generata tramite AJAX
draw_html() copia gli attributi con show_in_popup impostato a 0 in una chiave attributes, poi attiva il flag per la copertina. Il template della copertina stampa l'istantanea come JSON in base64. front.js la invia con la chiave dello shortcode, e get_gallery_by_shortcode() la decodifica, forza di nuovo show_in_popup a 0 in modo che la risposta sia sempre la galleria e mai un'altra copertina, e genera lo stesso template. Un flag sul client blocca i doppi clic mentre la richiesta è in corso.
Un gestore AJAX pubblico include template PHP per nomeLa chiave del template deve risolversi tramite il registro degli shortcode noti prima dell'include
get_gallery_by_shortcode() è registrato per gli utenti anonimi e riceve la chiave dello shortcode dal client. Include un template solo quando get_shortcode_key_folder() trova la chiave tra gli shortcode individuati all'init; qualsiasi altro valore non genera nulla.
Caricare ogni script di slider solo dove viene usatoI template accodano il proprio CSS e JS al rendering; ogni istanza riceve un contenitore uniqid
Gli accodamenti di script e stili si trovano in cima a ogni template di shortcode, così una pagina carica solo le librerie delle gallerie che mostra davvero, stampate nel footer. Ogni istanza riceve un ID di contenitore uniqid(), quindi più gallerie, comprese quelle con script diversi, possono girare nella stessa pagina.
Numeri
wordpress.org- Installazioni attive 700+ contatore di wordpress.org.
- Recensioni 18 Media 4.0 su 5.
- Anni di supporto 14 Dal 24 aprile 2012, ultimo aggiornamento 6 marzo 2026.