WP Manifestindependent plugin directory
manifest / media / conversor-webp

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

0stars
0forks

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.zip

Readme

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

  1. Converte o arquivo principal e todos os tamanhos gerados pelo WordPress para .webp.
  2. Redimensiona, se você definir largura ou altura máxima, preservando a proporção.
  3. Reduz a qualidade até chegar ao peso alvo em KB, se você informar um, sem nunca alterar as dimensões por causa desse limite.
  4. Move os originais para uma pasta de backup protegida. Se o backup falhar, a conversão para e nada é alterado naquela imagem.
  5. Atualiza post_mime_type, _wp_attached_file e _wp_attachment_metadata.
  6. Faz search and replace em wp_posts, wp_postmeta e wp_options, respeitando dados serializados.
  7. 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_file e o metadata de cada anexo
  • Remove os arquivos .webp que 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 .htaccess da pasta de backup para a raiz de uploads, 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

Read the full README on GitHub →