InPost Gallery
Plugin de WordPress que adjunta un conjunto de imágenes a cualquier entrada y lo muestra mediante scripts de galería y slider controlados por shortcodes.
- Primera versión
- Instalaciones activas
- 700+
- Valoración
- Leer reseñas
Sobre mí
InPost Gallery guarda una lista de imágenes en los metadatos de la entrada de cualquier tipo de contenido habilitado y la muestra mediante shortcodes. Cada shortcode envuelve un script de front-end (YoxView, Fancybox, Galleria, Nivo Slider, Camera), y un sexto shortcode coloca una sola imagen.
Gran parte de la ingeniería está en el editor. En el editor clásico (TinyMCE) los shortcodes aparecen como marcadores de posición en los que se puede hacer clic, y un doble clic abre un formulario ya rellenado con los atributos actuales del shortcode. El plugin no tiene integración con el editor de bloques. La propia lista de imágenes es una meta box en la pantalla de edición de la entrada. Declara compatibilidad desde WordPress 3.5 y está probado hasta la 6.9, un intervalo que incluye el cambio de la API de TinyMCE en WordPress 3.9.
En el front-end, las miniaturas se recortan al tamaño solicitado en el primer uso y se guardan en caché junto al archivo original. Una galería entera puede reducirse a una sola imagen de portada que carga la galería en una ventana emergente mediante AJAX, lo que permite colocar una galería grande en un widget de barra lateral.
InPost Gallery · galerías en entradas
qué se resolvió
Editor visual de shortcodes
en el productoQué aportaLos editores cambian las galerías mediante un formulario en el editor de entradas en lugar de editar códigos a mano, lo que significa menos páginas rotas.
- Problema
- Los shortcodes con muchos atributos son difíciles de editar a mano en el contenido de una entrada. El editor clásico (TinyMCE) tenía que mostrarlos como objetos, abrir un formulario con sus valores actuales y volver a escribirlos sin dañar la entrada.
- Solución
Un plugin de TinyMCE cambia los shortcodes por imágenes de marcador de posición al cargar y los devuelve a texto al guardar. El formulario de edición se renderiza en el servidor y obtiene sus valores del propio analizador de shortcodes de WordPress ejecutado en un modo de captura.
- Stack
Mostrar los shortcodes como objetos editables en el editor visualBeforeSetContent cambia los shortcodes por marcadores de posición; PostProcess restaura el texto
El servidor imprime una expresión regular construida a partir de las claves de shortcode registradas. En BeforeSetContent, cada coincidencia recibe un sc_id, su texto original pasa a un mapa y se sustituye por una imagen de marcador de posición con el icono del shortcode y un resumen de atributos en el título. En PostProcess, los marcadores se sustituyen de nuevo desde el mapa, así que la entrada guardada contiene shortcodes simples y nada específico del editor.
El formulario de edición debe abrirse con los valores actuales del shortcodeEjecutar do_shortcode() en modo de captura para que WordPress analice los atributos en la petición
En modo de edición, get_shortcode_template() establece una marca shortcode_mode_edit, conserva solo el primer shortcode registrado del texto enviado mediante get_shortcode_regex() y ejecuta do_shortcode(). El manejador de shortcode del plugin ve la marca y almacena los atributos analizados en lugar de renderizar HTML. Los campos del formulario leen después sus valores por defecto mediante set_default_value(), que los sanea.
Esto evita un segundo analizador de atributos: las comillas, el escapado y los espacios los gestiona el mismo código que renderiza el shortcode en el front-end.
El estado del formulario debe volver a convertirse en texto de shortcode válidoSerializar los campos marcados como atributos; cambiar las comillas dobles; unir los campos de lista con ^
changer() recorre cada elemento del formulario marcado con data-shortcode-field. Las comillas dobles dentro de los valores se sustituyen por comillas simples para que no puedan cerrar el atributo. Un campo llamado content pasa a ser el contenido encerrado. Los campos repetidos marcados como save_as_one se recogen y se unen con ^ en un solo atributo, ya que los atributos de shortcode no pueden contener arrays.
WordPress 3.9 cambió la API de plugins de TinyMCEIncluir dos compilaciones del editor y elegir una según $wp_version al encolar los scripts
TinyMCE 4 en WordPress 3.9 sustituyó manejadores como onBeforeSetContent.add() por ed.on('BeforeSetContent'). El plugin mantiene la compilación antigua en js/wp38/ y la nueva en js/, y elige entre ellas tanto para el script de administración como para el plugin de TinyMCE registrado.
Añadir un tipo de galería no debería requerir cambios en el núcleoShortcodes descubiertos a partir de archivos de plantilla; la misma lista controla qué plantillas se cargan
get_shortcodes_array() escanea views/shortcodes/popups/ y registra un shortcode por nombre de archivo. Cada clave tiene una plantilla de front-end y una plantilla de formulario de editor. get_shortcode_key_folder() devuelve la carpeta solo para claves conocidas, así que los llamantes de AJAX no pueden apuntar el include a otro archivo, y get_shortcode_template() recurre a inpost_gallery para nombres desconocidos.
Datos de imagen y miniaturas
en el productoQué aportaSe pueden elegir muchas imágenes de la biblioteca de medios a la vez, un mismo conjunto puede alimentar varias galerías y las miniaturas se crean una sola vez para que las páginas carguen rápido.
- Problema
- Las imágenes se eligen de la biblioteca de medios como URLs, se agrupan y se reordenan por entrada, y cada shortcode pide su propio tamaño de miniatura. Redimensionar en cada visita a la página es demasiado lento, y registrar un tamaño de imagen para cada posible ajuste de shortcode no es viable.
- Solución
Las diapositivas se almacenan como un único array en los metadatos de la entrada. Las miniaturas se producen en la primera petición con WP_Image_Editor y después se sirven desde disco.
- Stack
Cada galería pide su propio tamaño de miniaturaRedimensionar en el primer uso con WP_Image_Editor, guardar como name-WxH.ext y reutilizar el archivo si existe
get_image() recibe un alias de tamaño como 200x150 y llama a un redimensionador adaptado de Aqua Resizer 1.1.7. Calcula el tamaño de destino con image_resize_dimensions(), busca un archivo name-WxH.ext existente junto al original y devuelve su URL, o lo redimensiona y lo guarda en la primera petición. La clase está renombrada (Inpg_Aq_ResizePN) y envuelta en class_exists para que no pueda chocar con temas que incluyen la biblioteca original.
Seleccionar muchas imágenes a la vez desde el modal de mediosInterceptar send_to_editor, recoger las URLs y añadir diapositivas mediante AJAX secuencial en el orden de selección
El plugin abre el modal de medios estándar y sustituye temporalmente window.send_to_editor. El HTML insertado se analiza en un búfer oculto para obtener destinos de enlace u orígenes de imagen. add_meta_slide_items() solicita una diapositiva renderizada cada vez e inicia la siguiente petición en el callback, de modo que las diapositivas conservan el orden de la selección. La lista es ordenable y se renumera tras cada cambio.
Las imágenes de una entrada deben poder alimentar varias galerías distintasLas diapositivas llevan un número de grupo; los shortcodes seleccionan por grupo, lista de posiciones o N al azar
inpost_gallery_data es un array de diapositivas con imgurl, title y group (de 1 a max_thumb_groups, 30 por defecto). Las plantillas de front-end lo filtran por grupo, o por una lista separada por comas de posiciones basadas en 1, y random=N mezcla y conserva N diapositivas (-1 mezcla todas).
Galerías creadas con imágenes de otras entradasSintaxis de expresión en post_id (takebyid, take), analizada como JSON; consulta preparada
Un post_id que empieza por { se trata como una expresión. Los paréntesis pasan a ser corchetes y las comillas simples pasan a ser comillas dobles, y después json_decode() la analiza. takebyid toma bloques post:count:first|last|rand de las entradas indicadas. take selecciona las N últimas entradas publicadas de un tipo de contenido; el sentido de ordenación se limita a ASC o DESC y el tipo de contenido y el límite se enlazan con prepare().
Entrega en el front-end
en el productoQué aportaUna galería entera puede estar en una barra lateral como una sola imagen en la que hacer clic, y cada página carga solo los scripts de galería que realmente usa.
- Problema
- Una galería tiene que caber en un widget de barra lateral como una sola imagen, galerías con scripts distintos pueden compartir una página, y el endpoint AJAX que renderiza las galerías está abierto a visitantes anónimos.
- Solución
La imagen de portada lleva una instantánea serializada de los atributos del shortcode, y un manejador AJAX público vuelve a renderizar la misma plantilla a partir de ella mediante el registro de shortcodes. Cada plantilla encola sus propios recursos.
- Stack
Mostrar una galería entera como una sola imagen de portada en la que hacer clicInstantánea de atributos con la marca de ventana emergente desactivada, almacenada como JSON en base64 y renderizada por AJAX
draw_html() copia los atributos con show_in_popup a 0 en una clave attributes y después activa la marca para la portada. La plantilla de portada imprime la instantánea como JSON en base64. front.js la envía con la clave del shortcode, y get_gallery_by_shortcode() la decodifica, vuelve a forzar show_in_popup a 0 para que la respuesta sea siempre la galería y nunca otra portada, y renderiza la misma plantilla. Una marca en el cliente bloquea los dobles clics mientras la petición está en curso.
Un manejador AJAX público incluye plantillas PHP por nombreLa clave de plantilla debe resolverse a través del registro de shortcodes conocidos antes del include
get_gallery_by_shortcode() está registrado para usuarios anónimos y recibe la clave del shortcode desde el cliente. Solo incluye una plantilla cuando get_shortcode_key_folder() encuentra la clave entre los shortcodes descubiertos en init; cualquier otro valor no renderiza nada.
Cargar cada script de slider solo donde se usaLas plantillas encolan su propio CSS y JS al renderizar; cada instancia recibe un contenedor uniqid
Los encolados de scripts y estilos están al principio de cada plantilla de shortcode, así que una página carga solo las bibliotecas de las galerías que realmente muestra, impresas en el pie de página. Cada instancia recibe un ID de contenedor uniqid(), de modo que varias galerías, incluidas las que usan scripts distintos, pueden funcionar en una misma página.
Cifras
wordpress.org- Instalaciones activas 700+ contador de wordpress.org.
- Reseñas 18 Media de 4.0 sobre 5.
- Años de soporte 14 Desde 24 de abril de 2012, última actualización 6 de marzo de 2026.