InPost Gallery
Plugin WordPress que associa um conjunto de imagens a qualquer artigo e o mostra através de scripts de galeria e slider controlados por shortcodes.
- Primeira versão
- Instalações ativas
- 700+
- Classificação
- Ler avaliações
Sobre
O InPost Gallery mantém uma lista de imagens na meta do artigo de qualquer tipo de conteúdo ativado e apresenta-a através de shortcodes. Cada shortcode envolve um script de front-end (YoxView, Fancybox, Galleria, Nivo Slider, Camera), e um sexto shortcode coloca uma única imagem.
A maior parte da engenharia está no editor. No editor clássico (TinyMCE), os shortcodes aparecem como marcadores clicáveis, e um duplo clique abre um formulário já preenchido com os atributos atuais do shortcode. O plugin não tem integração com o editor de blocos. A própria lista de imagens é uma meta box no ecrã de edição do artigo. Declara suporte a partir do WordPress 3.5 e está testado até à 6.9, um intervalo que inclui a alteração da API do TinyMCE no WordPress 3.9.
No front-end, as miniaturas são cortadas ao tamanho pedido na primeira utilização e guardadas em cache junto ao ficheiro original. Uma galeria inteira pode ser reduzida a uma única imagem de capa que carrega a galeria num popup por AJAX, o que permite colocar uma galeria grande num widget da barra lateral.
InPost Gallery · galerias em artigos
o que foi resolvido
Editor visual de shortcodes
no produtoO que ofereceOs editores alteram as galerias através de um formulário no editor do artigo, em vez de editarem códigos à mão, o que significa menos páginas estragadas.
- Problema
- Os shortcodes com muitos atributos são difíceis de editar à mão no conteúdo do artigo. O editor clássico (TinyMCE) tinha de os mostrar como objetos, abrir um formulário com os valores atuais e escrevê-los de volta sem danificar o artigo.
- Solução
Um plugin do TinyMCE troca os shortcodes por imagens marcadoras ao carregar e de volta para texto ao guardar. O formulário de edição é renderizado no servidor e obtém os seus valores do próprio analisador de shortcodes do WordPress, executado num modo de captura.
- Stack
Mostrar shortcodes como objetos editáveis no editor visualBeforeSetContent troca os shortcodes por marcadores; PostProcess restaura o texto
O servidor imprime uma regex construída a partir das chaves de shortcode registadas. Em BeforeSetContent, cada correspondência recebe um sc_id, o seu texto original vai para um mapa e é substituída por uma imagem marcadora com o ícone do shortcode e um resumo dos atributos no título. Em PostProcess, os marcadores são substituídos de volta a partir do mapa, pelo que o artigo guardado contém shortcodes simples e nada específico do editor.
O formulário de edição tem de abrir com os valores atuais do shortcodeExecutar do_shortcode() em modo de captura para que o WordPress analise os atributos para dentro do pedido
Em modo de edição, get_shortcode_template() define uma flag shortcode_mode_edit, mantém apenas o primeiro shortcode registado do texto enviado através de get_shortcode_regex() e executa do_shortcode(). O handler de shortcode do plugin vê a flag e guarda os atributos analisados em vez de renderizar HTML. Os campos do formulário leem depois os seus valores por omissão através de set_default_value(), que os sanitiza.
Isto evita um segundo analisador de atributos: aspas, escape e espaçamento são tratados pelo mesmo código que renderiza o shortcode no front-end.
O estado do formulário tem de voltar a ser texto de shortcode válidoSerializar os campos marcados como atributos; trocar aspas duplas; juntar campos de lista com ^
changer() percorre todos os elementos do formulário marcados com data-shortcode-field. As aspas duplas dentro dos valores são substituídas por aspas simples, para não poderem fechar o atributo. Um campo chamado content passa a ser o conteúdo envolvido. Os campos repetidos marcados com save_as_one são reunidos e juntos com ^ num só atributo, já que os atributos de shortcode não podem conter arrays.
O WordPress 3.9 alterou a API de plugins do TinyMCEDistribuir duas versões do editor e escolher uma por $wp_version quando os scripts são colocados em fila
O TinyMCE 4 no WordPress 3.9 substituiu handlers como onBeforeSetContent.add() por ed.on('BeforeSetContent'). O plugin mantém a versão antiga em js/wp38/ e a nova em js/, e escolhe entre elas tanto para o script de administração como para o plugin do TinyMCE registado.
Acrescentar um tipo de galeria não deve exigir alterações ao núcleoShortcodes descobertos a partir de ficheiros de template; a mesma lista controla quais os templates que carregam
get_shortcodes_array() analisa views/shortcodes/popups/ e regista um shortcode por nome de ficheiro. Cada chave tem um template de front-end e um template de formulário do editor. get_shortcode_key_folder() devolve a pasta apenas para chaves conhecidas, pelo que chamadores AJAX não podem apontar o include para outro ficheiro, e get_shortcode_template() recorre a inpost_gallery para nomes desconhecidos.
Dados de imagem e miniaturas
no produtoO que ofereceMuitas imagens podem ser escolhidas da biblioteca de multimédia de uma só vez, um conjunto pode alimentar várias galerias, e as miniaturas são feitas uma só vez para que as páginas carreguem depressa.
- Problema
- As imagens são escolhidas da biblioteca de multimédia como URLs, agrupadas e reordenadas por artigo, e cada shortcode pede o seu próprio tamanho de miniatura. Redimensionar a cada visualização de página é demasiado lento, e registar um tamanho de imagem para cada definição possível de shortcode não é viável.
- Solução
Os slides são guardados como um único array na post meta. As miniaturas são produzidas no primeiro pedido com WP_Image_Editor e servidas do disco daí em diante.
- Stack
Cada galeria pede o seu próprio tamanho de miniaturaRedimensionar na primeira utilização com WP_Image_Editor, guardar como name-WxH.ext, reutilizar o ficheiro se existir
get_image() recebe um alias de tamanho como 200x150 e chama um redimensionador adaptado do Aqua Resizer 1.1.7. Calcula o tamanho de destino com image_resize_dimensions(), procura um ficheiro name-WxH.ext existente junto ao original e devolve o seu URL, ou redimensiona e guarda-o no primeiro pedido. A classe foi renomeada (Inpg_Aq_ResizePN) e envolvida em class_exists, para não colidir com temas que incluem a biblioteca original.
Selecionar muitas imagens de uma só vez a partir do modal de multimédiaIntercetar send_to_editor, recolher URLs, acrescentar slides por AJAX sequencial pela ordem da seleção
O plugin abre o modal de multimédia padrão e substitui temporariamente window.send_to_editor. O HTML inserido é analisado num buffer oculto para obter destinos de ligação ou origens de imagem. add_meta_slide_items() pede um slide renderizado de cada vez e inicia o pedido seguinte no callback, para que os slides mantenham a ordem da seleção. A lista é ordenável e renumerada após cada alteração.
As imagens de um artigo têm de alimentar várias galerias diferentesOs slides têm um número de grupo; os shortcodes selecionam por grupo, lista de posições ou N aleatórios
inpost_gallery_data é um array de slides com imgurl, title e group (1 a max_thumb_groups, 30 por omissão). Os templates de front-end filtram-no por grupo, ou por uma lista separada por vírgulas de posições a partir de 1, e random=N embaralha e mantém N slides (-1 embaralha todos).
Galerias construídas com imagens de outros artigosSintaxe de expressão em post_id (takebyid, take), analisada como JSON; consulta preparada
Um post_id que começa por { é tratado como expressão. Os parênteses passam a retos e as aspas simples a aspas duplas, e depois json_decode() analisa-o. takebyid obtém blocos post:count:first|last|rand de artigos listados. take seleciona os N artigos publicados mais recentes de um tipo de conteúdo; a direção da ordenação limita-se a ASC ou DESC e o tipo de conteúdo e o limite são ligados com prepare().
Entrega no front-end
no produtoO que ofereceUma galeria inteira pode ficar na barra lateral como uma única imagem clicável, e cada página carrega apenas os scripts de galeria que realmente utiliza.
- Problema
- Uma galeria tem de caber num widget da barra lateral como uma só imagem, galerias com scripts diferentes podem partilhar uma página, e o endpoint AJAX que renderiza galerias está aberto a visitantes anónimos.
- Solução
A imagem de capa transporta um instantâneo serializado dos atributos do shortcode, e um handler AJAX público volta a renderizar o mesmo template a partir dele através do registo de shortcodes. Cada template coloca em fila os seus próprios recursos.
- Stack
Mostrar uma galeria inteira como uma única imagem de capa clicávelInstantâneo dos atributos com a flag de popup desligada, guardado como JSON em base64, renderizado por AJAX
draw_html() copia os atributos com show_in_popup a 0 para uma chave attributes e depois liga a flag para a capa. O template da capa imprime o instantâneo como JSON em base64. front.js envia-o com a chave do shortcode, e get_gallery_by_shortcode() descodifica-o, força de novo show_in_popup a 0 para que a resposta seja sempre a galeria e nunca outra capa, e renderiza o mesmo template. Uma flag no cliente bloqueia cliques duplos enquanto o pedido decorre.
Um handler AJAX público inclui templates PHP por nomeA chave do template tem de ser resolvida através do registo de shortcodes conhecidos antes do include
get_gallery_by_shortcode() está registado para utilizadores anónimos e recebe a chave do shortcode do cliente. Só inclui um template quando get_shortcode_key_folder() encontra a chave entre os shortcodes descobertos no init; qualquer outro valor não renderiza nada.
Carregar cada script de slider apenas onde é utilizadoOs templates colocam em fila o seu próprio CSS e JS ao renderizar; cada instância recebe um contentor uniqid
As colocações em fila de scripts e estilos ficam no topo de cada template de shortcode, pelo que uma página carrega apenas as bibliotecas das galerias que realmente mostra, impressas no rodapé. Cada instância recebe um ID de contentor uniqid(), pelo que várias galerias, incluindo as de scripts diferentes, podem correr numa mesma página.
Números
wordpress.org- Instalações ativas 700+ contador do wordpress.org.
- Avaliações 18 Média de 4.0 em 5.
- Anos de suporte 14 Desde 24 de abril de 2012, última atualização em 6 de março de 2026.