Se a versão 1.3.0 voltou a atenção para a busca, desta vez o foco está em como os itens são apresentados. A Galeria de Mídias — o componente responsável por apresentar documentos e anexos nas páginas de itens, nos blocos Gutenberg e nos temas do Tainacan — ganhou várias opções de layout que há muito eram solicitadas. Além disso, dedicamos bastante tempo ao aumento da segurança do nosso código, algo essencial em tempos de ataques realizados por bots de IA.
Algumas das novas opções da galeria dependem da camada do tema. Se você usa o Tainacan Interface ou o Suporte Tainacan para o Blocksy, atualize para o Interface >= 2.10.0 ou Suporte Blocksy >= 0.5.0 para ter acesso aos controles no menu Personalizar e aos estilos correspondentes. Ambos também receberam uma série de melhorias nos controles de Personalizar, especialmente para ocultar opções que não têm efeito em determinados contextos.
Se você está curioso para saber mais sobre essas mudanças, vem com a gente!
O que há de novo?
Uma Galeria de Mídias que trata PDFs como documentos, e não só um pequeno leitor
Em galerias mistas — fotografias ao lado de um PDF — o leitor incorporado no slider principal nunca foi uma solução muito boa. Ele disputa espaço com a altura do carrossel, captura cliques que deveriam abrir a lightbox e muitas vezes mostra apenas a primeira página recortada. Ao mesmo tempo, alguns sites querem esse iframe, porque o template do item é largo e alto o suficiente para funcionar como leitor nativo do navegador.
Agora existe a opção Show PDF cover instead of embedded reader no bloco Galeria de Mídias do Item. Quando ativada, os slides de PDF usam uma imagem de pré-visualização — a miniatura do anexo, a prévia de PDF do WordPress ou um ícone de MIME — em vez do iframe. A lightbox ainda pode abrir o leitor propriamente dito.
No Tainacan Interface 2.10.0 e no Suporte Tainacan ao Blocksy 0.5.0, a mesma opção está disponível no menu Personalizar para a página individual do item.
Expandir, Baixar e cliques que vão para o lugar certo
Com a lightbox ativada, qualquer clique dentro da galeria costumava abrir a camada de zoom em uma janela modal. Isso fazia sentido para uma fotografia que você quer ampliar. Mas era um problema para um vídeo, um player de áudio ou um PDF incorporado: os controles que você acabara de ver não podiam ser usados, pois a única ação disponível era abrir a camada adicional.
A partir de agora, imagens (e capas de PDF, que também são imagens) continuam abrindo o visualizador ampliado ao serem clicadas. Vídeos, áudios e conteúdos incorporados continuam interativos e permitem o uso de seus próprios controles. Para abrir a lightbox a partir desses slides — ou simplesmente continuar navegando pela galeria — há agora um novo controle Expandir, ao lado do Baixar, em uma área compartilhada de ações.
O plugin fornece esses controles como links e botões reais, acompanhados apenas de CSS básico para o layout. Os temas podem personalizar essa área: o Interface 2.10.0 e o Suporte ao Blocksy 0.5.0 adicionam opções no menu Personalizar para o botão de download, o botão de expansão e os metadados exibidos no slide.
Miniaturas como carrossel, grade ou lista
A faixa de miniaturas abaixo do slider principal não está mais limitada a um carrossel. Nos blocos Galeria de Mídias do Item e Galeria de Items, as miniaturas agora podem ser exibidas como Carrossel (o padrão), Grade ou Lista.
Procure por Configurações das miniaturas → Layout nos blocos Galeria de Mídias do Item e Galeria de Items. Os mesmos três layouts estão disponíveis no menu Personalizar do Interface e do Blocksy, inclusive na galeria de itens relacionados.
Escolha quais coleções relacionadas exibir
O bloco Itens Relacionados do Tainacan costumava renderizar todos os grupos de relacionamentos usando um único layout. Era possível inserir o bloco duas vezes, mas as duas instâncias ainda listavam tudo. Templates de itens frequentemente precisam de um carrossel para algumas coleções relacionadas e de uma grade para outras.
Agora existe uma lista opcional de coleções permitidas na barra lateral do bloco. Deixe-a vazia e nada muda. Preencha-a e aquela instância exibirá apenas os grupos de relacionamentos selecionados. Assim, dois blocos no mesmo template podem ter layouts diferentes e exibir coleções relacionadas diferentes.

Título, descrição e miniatura em listas de itens no nível do repositório
O Título e a Descrição principais existem em todas as coleções, portanto as listas de itens do repositório e dos termos de taxonomias podem exibi-los. Até agora, porém, as configurações de “exibir” e “oferecer na busca avançada” definidas no nível da coleção não se aplicavam a esses contextos. Por exemplo, não era possível ocultar a descrição da lista pública do repositório a partir do formulário da coleção.
A tela de Configurações do plugin agora tem uma nova seção, Listas de itens do repositório e do termo. Nela, você pode decidir se o título, a descrição e a miniatura aparecem por padrão, ficam disponíveis como opções ou nunca aparecem nessas listagens — e também se título e descrição serão oferecidos na Busca Avançada. As configurações dos metadados da coleção continuam em seus respectivos formulários.

Melhorias
Processos em segundo plano melhorados
Os processos de importação, exportação e edição em massa que poderiam ficar travados (“Aguarde, criando metadado de controle de edição em massa…”) agora contam com um tempo limite maior para processos considerados obsoletos, novas tentativas e um watchdog (a lógica de tentativas após falhas) mais confiável. Para complementar essas melhorias de backend, também fizemos uma pequena reformulação da interface da tabela de Processos, que agora apresenta melhor o estado de cada processo:

Outras melhorias
- Arquivos CSV enviados para o importador são removidos quando o processo termina ou falha, para que não permaneçam na biblioteca de mídia (nem nos índices dos mecanismos de busca);
- Valores de metadados que antes eram envolvidos por
<p>(formulário de item, modos de visualização e templates públicos) agora usam<div>, permitindo HTML rico válido dentro de um valor. O Interface 2.10.0 e o Suporte ao Blocksy 0.5.0 atualizam seus CSS para essa marcação; - Nova opção Evitar que vídeos sejam pré-carregados em Configurações → Busca e desempenho (
preload="none"até que o visitante clique em reproduzir); - Os placeholders dos blocos Gutenberg estão mais simples;
- Os menus suspensos de ordenação agora usam os rótulos personalizados do Título e da Descrição principais;
- O cartão “Novidades e eventos” no Dashboard agora possui links devidamente traduzíveis;
Reforço de segurança
Esta versão inclui uma ampla revisão com o Plugin Check e vários relatórios de segurança (incluindo path traversal em arquivos temporários e de processos em segundo plano, object injection por meio das opções de tipo e da ordem das coleções, validações mais rigorosas do escopo da API REST e remoção de dados sensíveis de usuários nos Relatórios). Os detalhes são técnicos, mas o resultado prático é um painel administrativo e uma API REST mais seguros.
- Reforço de segurança baseado no Plugin Check e em relatórios de vulnerabilidades: SQL preparado, helpers de sistema de arquivos mais seguros, tratamento de
REMOTE_ADDRpelo Recaptcha, path traversal autenticado emtmp_fileebg-processes/file, PHP object injection por meio das opções de tipo de metadados/filtros e da ordem das coleções, verificações de escopo na REST API e remoção de campos sensíveis de usuários do endpoint de Relatórios; - Autocompletes do admin, seletores de itens relacionados, seletores de taxonomias/coleções e a lista de coleções do exportador agora paginam e pesquisam em vez de solicitar
nopaging/perpage=-1. A REST API não aceita mais esses atalhos de “carregar tudo”; - A tela e o endpoint de Relatórios agora exigem a capacidade
manage_tainacan; - Filtros de coleções marcados para aparecer em listas no nível do repositório podem ser incluídos nessa requisição por meio de um parâmetro específico da API;
- E, como de costume, uma rodada de ajustes internos no código, incluindo ESLint nos arquivos JavaScript e uma revisão com o Plugin Check nos processos em segundo plano, migrações e edição em massa.
Correções de bugs
- Lista de itens que falhava ao carregar quando os da coleção ainda não estavam disponíveis no Vue store;
- Textarea do modal de conteúdo de documentos que crescia para fora da tela;
- Players de áudio da galeria que quebravam no Chrome após uma transição de slide;
- Navegação do carrossel de miniaturas que permanecia ativa quando não havia slider principal;
- Busca em facetas que tratava um
0literal como vazio; - Atributos extras do Dublin Core em um mapper que quebravam o exportador;
- Wrappers duplicados nas descrições de seções em template tags;
- Formulário de edição de itens que não possui mais inputs multivalorados compartilhando o mesmo ID;
srcsetausente em algumas listagens de itens relacionados / telas de alta densidade de pixels;- Avisos do Vue na tela de configurações da coleção;
- Alterar a coleção relacionada em um metadado do tipo Relacionamento não limpa mais as outras opções; os itens relacionados já selecionados agora são paginados corretamente;
- Imagens com BlurHash que faziam o carregamento da lista de itens demorar mais do que o necessário;
- Importador de termos que não apresenta mais avisos sobre chaves de array indefinidas;
- PHPUnit agora pode ser executado usando um banco de dados de testes existente.
Para desenvolvedores
Extensões da galeria passam a contar com novos argumentos em tainacan_the_item_gallery() / get_tainacan_item_gallery() (e no equivalente do Items Gallery):
coverMimeTypesMain— tipos MIME que devem renderizar uma capa no slider principal em vez de um conteúdo incorporado (por exemplo,array( 'application/pdf' ));thumbsLayout—carousel(padrão),gridoulist. Outros slugs são repassados para o CSS do tema;showDownloadButtonMaine o novo controle Expand em.tainacan-media-item-actions. Estilize esse wrapper em vez de criar um overlay paralelo. As informações sobre o tipo de mídia estão disponíveis para que os temas possam variar o botão de download de acordo com o MIME;- Não assuma
pointer-events: noneemvideo,audioouiframequando a lightbox estiver ativada. Somente slides ampliáveis (imagens e capas) abrem o PhotoSwipe ao serem clicados.
Itens relacionados:
- Atributo do bloco / argumento PHP
relatedCollectionIds(vazio = todos os grupos). A filtragem acontece emTheme_Helper::get_tainacan_related_items_list().
Outras observações:
- Os placeholders de BlurHash podem ser desativados com
TAINACAN_DISABLE_BLURHASHou pelo filtrotainacan-enable-image-blurhash, e o fade agora é mais curto (200ms). Isso pode ser útil se as listas masonry estiverem demorando para carregar por causa da decodificação no canvas; - Metadados e descrições agora são
<div>s, e não<p>s. Se o seu tema ou plugin tinha seletores direcionados apdentro dos metadados do Tainacan, atualize-os; - Endpoints de listagem da API REST não aceitam mais
nopagingouperpage=-1. Use paginação para percorrer os resultados. - Operações em lote sobre termos de taxonomias são limitadas por
TAINACAN_API_MAX_BATCH_TERMS(padrão 200); - Requisições de filtros no nível do repositório podem incluir filtros de coleções que tenham
display_in_repository_level_listsdefinido comotrue, por meio deappend_from_collections; - Reports exige
manage_tainacan;bg-processes/filetambém; - Os scripts Gutenberg agora usam
createElement/ Fragment do WordPress (compatíveis com React 19) em vez de incluir sua própria versão do React; - ESLint é executado nos arquivos JavaScript durante o build com webpack.
Novos contribuidores
Como você pode perceber, esta versão inclui muitos pequenos recursos e correções internas que só foram possíveis graças a novos contribuidores incríveis, como:
Sejam muito bem-vindos!
Baixe agora!
A versão 1.4.0 do Tainacan já está disponível para download no repositório de plugins do WordPress, juntamente com o Tainacan Interface 2.10.0 e o Tainacan Support for Blocksy 0.5.0:



