Conversor WebP em Massa
O plugin percorre a Biblioteca de Mídia, converte cada imagem JPEG, PNG, BMP ou TIFF para WebP e cuida de tudo que vem junto: os tamanhos gerados pelo WordPress, os endereços espalhados pelo banco de dados e os links antigos que já circulam por ai.
by Mateus Alves Lopes · github.com/nenyrs/conversor-webp · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/nenyrs/conversor-webp/archive/refs/heads/main.zipReadme
Conversor WebP em Massa
Plugin WordPress que converte as imagens da Biblioteca de Mídia para WebP, atualiza os
endereços no banco de dados, redireciona as URLs antigas e guarda os arquivos originais
em backup, com download em .zip e reversão completa.
A ideia é simples: converter para WebP em massa sem deixar imagem quebrada pelo caminho e sem tirar do usuário a possibilidade de voltar atrás.
O que ele faz em cada imagem
- Converte o arquivo principal e todos os tamanhos gerados pelo WordPress para
.webp. - Redimensiona, se você definir largura ou altura máxima, preservando a proporção.
- Reduz a qualidade até chegar ao peso alvo em KB, se você informar um, sem nunca alterar as dimensões por causa desse limite.
- Move os originais para uma pasta de backup protegida. Se o backup falhar, a conversão para e nada é alterado naquela imagem.
- Atualiza
post_mime_type,_wp_attached_filee_wp_attachment_metadata. - Faz search and replace em
wp_posts,wp_postmetaewp_options, respeitando dados serializados. - Cadastra um redirect 301 da URL antiga para a nova.
Instalação
Baixe o .zip da última release e instale em Plugins > Adicionar novo >
Enviar plugin. Ou clone direto na pasta de plugins:
cd wp-content/plugins
git clone https://github.com/SEU-USUARIO/conversor-webp.git
Depois é só ativar e acessar Mídia > Conversor WebP.
Como usar
A própria tela traz o passo a passo e um diagnóstico do servidor. O resumo:
| Passo | O que fazer |
|---|---|
| 1 | Faça um backup do banco de dados |
| 2 | Rode com Modo de teste marcado e 5 no campo de quantidade. Nada é gravado |
| 3 | Desmarque o modo de teste, mantenha 5 ou 10 e converta de verdade. Confira o site |
| 4 | Apague o campo de quantidade e converta o restante. Pode pausar e retomar |
| 5 | Confira o site com calma: páginas internas, galerias, sliders, logotipo |
| 6 | Baixe o backup em .zip e só então exclua a pasta do servidor |
O modo de teste vem marcado por padrão. A primeira coisa que acontece quando alguém instala o plugin é, obrigatoriamente, uma simulação que não grava nada.
Reverter
O botão Reverter desfaz a conversão por completo, sem precisar de backup do banco:
- Devolve os arquivos originais para o lugar
- Desfaz o search and replace nos endereços do banco
- Repõe
post_mime_type,_wp_attached_filee o metadata de cada anexo - Remove os arquivos
.webpque o plugin criou - Apaga os redirects 301
A reversão funciona enquanto a pasta de backup existir. Depois de excluir o backup, não há
mais como voltar pelo plugin, e é por isso que o download em .zip existe.
Requisitos
- PHP 7.4 ou superior
- WordPress 5.5 ou superior
- GD com suporte a WebP, ou Imagick
- Permissão de escrita em
wp-content/uploads/ ZipArchive, apenas para o download do backup. Sem ela o resto funciona normalmente e você baixa a pasta por FTP
O plugin checa tudo isso na própria tela e mostra o que fazer se algum item falhar.
Segurança do backup
A pasta de backup fica dentro de uploads, com um sufixo aleatório gerado por instalação
(_backup-webp-a91f3c2e, por exemplo), e é protegida por .htaccess no Apache e
web.config no IIS.
Em nginx e LiteSpeed o .htaccess é ignorado. A tela detecta isso e avisa. Se o
conteúdo for sensível, adicione ao seu nginx.conf, trocando pelo nome real da pasta que a
tela mostra:
location ~* /_backup-webp-[a-zA-Z0-9]+/ { deny all; }
Perguntas frequentes
Posso rodar em um site grande? Sim. A conversão vai de uma imagem por vez via AJAX, com a fila guardada no banco. Pode pausar, fechar a aba e retomar depois de onde parou.
E se a conversão parar no meio? A fila fica salva. Ao voltar na tela, o plugin avisa quantas faltam e oferece o botão Retomar. Se a sessão expirar numa conversão longa, ele explica isso em vez de dar erro.
A Biblioteca mostra o tamanho antigo do arquivo. Use o botão "Corrigir o tamanho exibido na Biblioteca". É só o número guardado no banco, o arquivo em disco já está correto.
Funciona em multisite? Funciona por site, e cada site tem a própria pasta de backup e as próprias opções.
Duas pessoas podem rodar ao mesmo tempo? Não, e é de propósito. Existe uma trava que impede duas abas de processarem a mesma fila e corromperem o andamento.
Versão 1.1.0
Esta versão nasceu de uma auditoria completa da 1.0.7, que encontrou doze problemas, três deles capazes de destruir arquivos em definitivo. Todos foram corrigidos e verificados reproduzindo o problema original em um WordPress real, antes e depois.
Os três mais graves:
- A reversão restaurava o
.htaccessda pasta de backup para a raiz deuploads, o que bloqueava todas as imagens do site em Apache e LiteSpeed. - Quando o backup falhava, por permissão ou disco cheio, o original era apagado assim mesmo e a tela mostrava sucesso.
- Imagens acima de 2560px perdiam a URL do arquivo original, que ia para o backup sem substituição no banco e sem redirect, deixando a imagem quebrada.
O readme.txt traz o changelog completo.
Contribuindo
Issues e pull requests são bem-vindos. Se for reportar um bug, ajuda muito informar a versão do WordPress e do PHP, o servidor (Apache, nginx, LiteSpeed) e se a conversão usou GD ou Imagick, que o log da tela mostra em cada linha.
Licença
GPLv2 ou posterior, mesma licença do WordPress. Veja LICENSE.
Autor
Mateus Alves Lopes codech.com.br