Autoptimize

Descrição

Autoptimize torna bem fácil otimizar seu site. Pode agregar, minificar e armazenar (cache) scripts e estilos, adicionar CSS no elemento head da página por padrão (mas também pode adiar), move e adia scripts para o rodapé e minifica HTML. As opções “Extras” permitem você deixar assíncrono o JavaScript não-agregado, remover o emoji meia-boca dos arquivos básicos do WordPress, otimizar Fontes Google e mais. E assim, pode melhorar o desempenho de seu site mesmo quando em HTTP/2! Tem disponível uma API bem abrangente que permite que você ajuste Autoptimize a cada e toda necessidade específica do seu site.

Se você considerar performance importante, você realmente deveria usar um dos muitos plugins de cache para fazer cache de página. Bons candidatos a complementar o Autoptimize desta forma são e.g. WP Super Cache, HyperCache, Comet Cache ou KeyCDN’s Cache Enabler.

Suporte Premium
Nós oferecemos serviços premium de Otimização de Performance Web e Suporte Pro para Autoptimize, veja nossa oferta em (http://autoptimize.com/)!

(Imagem Speed-surfing de LL Twistiti sob licença creative commons)

Instalação

Apenas instale a partir da tela “Plugins > Novo ” e tudo correrá bem. Instalação manual é simples também:

  1. Faça upload do arquivo zip e o descompacte no diretório /wp-content/plugins/
  2. Ative o plugin por meio do menu “Plugins” no WordPress
  3. Vá para Configurações > Autoptimize e ative as opções que desejar. Geralmente isto significa “Otimizar HTML/ CSS/ JavaScript”.

FAQ

Instruções de Instalação

Apenas instale a partir da tela “Plugins > Novo ” e tudo correrá bem. Instalação manual é simples também:

  1. Faça upload do arquivo zip e o descompacte no diretório /wp-content/plugins/
  2. Ative o plugin por meio do menu “Plugins” no WordPress
  3. Vá para Configurações > Autoptimize e ative as opções que desejar. Geralmente isto significa “Otimizar HTML/ CSS/ JavaScript”.
O que este plugin faz para ajudar a acelerar meu site?

Concatena todos os scripts e folhas de estilo e os minifica e comprime, adiciona cabeçalhos de expiração, faz cache deles, e move os estilos para o <head>, e os scripts (opcionalmente) para o rodapé. Também minifica o próprio código HTML, tornando sua página realmente leve.

Mas eu estou com HTTP/2, então não preciso de Autoptimize?

HTTP/2 certamente é um grande passo à frente, reduzindo o impacto de requisições múltiplas para o mesmo servidor ao usar a mesma conexão para realizar várias requisições ao mesmo tempo. Dito isto, concatenar CSS/ JS ainda pode fazer muito sentido, como descrito neste artigo do css-tricks.com (em inglês) e neste blogpost
de um dos engenheiros do Ebay
(em inglês). Conclusão: configure, teste, reconfigure, teste de novo, ajuste e veja o que funciona melhor no seu contexto. Talvez seja só HTTP/2, talvez seja HTTP/2 + agregação e minificação, talvez seja HTTP/2 + minificação (o que AO também faz).

Isto vai funcionar no meu blog?

Embora Autoptimize venha sem nenhuma garantia, em geral vai funcionar sem falhas se você configurá-lo corretamente. Veja as informações de “Resolução de Problemas” abaixo sobre como configurar em caso de problemas.

Por quê jquery.js não é otimizado

Começando com AO 2.1, o jquery.js do WordPress core não é otimizada pela simples razão de que um monte de plugins populares adicionam JS em linha que também não são agregados (devido a possíveis problema de tamanho de cache com códigos únicos no JS em linha) que depende do jquery estar disponível, então excluir jquery.js garante que a maioria dos sites vão funcionar por padrão. Se você também quer otimizar o jquery.js, pode removê-lo da lista de exclusão de otimização de JS (você talvez tenha que habilitar “também agregar o JS em linha” ou ligar o “forçar JS no cabeçalho).

Por quê o JS Autoptimizado bloqueando renderização?

Se não usar “Forçar JavaScript na seção head?”, o JS Autoptimizado não bloqueia a renderização e tem o parâmetro “defer” adicionado. Entretanto, é possível que outros plugin remova o parâmetro “defer”. Já foi reportado o plugin Speed Booster Pack fazendo isto, mas o comportamento não foi confirmado ainda.

Porquê o CSS autoptimizado ainda é considerado como bloqueador de render.

Na configuração padrão do Autoptimize o CSS é linkado no elemento “head”, que é um padrão seguro mas vai fazer o Google PageSpeed Insights reclamar. Você pode dar uma olhada em “Colocar todo CSS inline?” (fácil) ou “CSS em linha e adiado?”(melhor) que também são explicadas nestas Perguntas Frequentes.

Qual é a função de “CSS em linha e adiado”?

Em geral, CSS deveria ir no <head> do documento. Recentemente, o Google começou a promover o adiamento de CSS não essencial, ao mesmo tempo que coloca em linha os estilos necessários para mostrar a área “acima da borda” da página. Isto é especialmente importante para renderizar as páginas o mais rápido possível em dispositivos móveis. Desde o Autoptimize 1.9.0 isto é fácil; selecion “CSS em linha e adiado”, cole o bloco de “CSS acima da borda” no campo de texto e e está tudo pronto!

Mas como posso saber o que é o “CSS acima da borda”?

Não há solução fácil já que “acima da borda” depende de onde a borda (inferior) é, o que depende do tamanho da tela. Entretanto, existem algumas ferramentas que tentam identificar o que é “acima da dobra”. Esta lista de ferramentas (em inglês) é um bom ponta de partida. http://jonassebastianohlsson.com/criticalpathcssgenerator/ (inglês) é uma solução básica boa e http://criticalcss.com/ (inglês) é uma ferramenta premium do mesmo desenvolvendor. Como alternativa este bookmarklet (inglês e apenas para Chrome) pode ajudar também.

Deveria colocar todo o CSS em linha?

A resposta curta: provavelmente não.

Antigamente, otimizar CSS era fácil; você colocava CSS na <head>, agregando tudo em um arquivo CSS por tipo de mídia e estava pronto. Mas desde que o Google incluiu dispositivos móveis no PageSpeed Insights e começou a reclamar de CSS bloqueando renderização, as coisas ficaram complicadas (veja “Qual é a função de ‘CSS em linha e adiado'” nesta FAQ). Uma das soluções é colocar todo o CSS em linha, que é suportado desde o Autoptimize 1.8.0.

Colocar todo o CSS em linha tem uma vantagem clara (melhor pontuação no PageSpeed) e uma grande desvantagem; o HTML base de suas páginas ficam bem maiores e a quantidade de CSS é grande, o PageSpeed Insights vai reclamar de “roundtrip times”. E também, ao analisar testes que incluem múltiplas requisições (digamos, 5 páginas), a performance será pior, já que o CSS é enviado várias vezes quando, normalmente, arquivos separados de CSS não precisariam ser reenviados já que estão em cache.

Então a escolha deveria ser baseada na sua resposta para duas perguntas específicas para cada site: quando de CSS você tem? Quantas páginas o visitante requisita a cada visita? Se você tem bastante CSS ou um grande número de páginas por vista, pode não ser uma boa ideia colocar todo o CSS em linha.

Você pode encontrar mais informação sobre este tópico neste post (em inglês).

Meu cache está ficando enorme, o Autoptimize não esvazia o cache?

Autoptimize não tem um mecanismo próprio para limpar o cache, já que isto poderia remover CSS/JS otimizado que ainda estariam sendo referidos por outros caches, o que poderia quebrar seu site. Além disto, um cache aumentando muito rapidamente é indicação de outros problemas que você deveria evitar.

Você pode manter o tamanho do cache num nível aceitável das seguintes formas:

  • desativando as opções “agregar JS em linha” e/ou “agregar CSS em linha”
  • excluindo variáveis JS (ou seletores CSS em alguns casos) que mudam página à página (ou a cada carregamento. Você pode ler como fazer isto neste post (em inglês).

Apesar das objeções, há algumas soluções de terceiros para expurgar automaticamente o cache do AO, e.g usar este código (em inglês) ou este plugin, mas pelas razões acima isto deve ser considerado apenas se você realmente souber o que está fazendo.

“Limpar cache” aparentemente não funciona?

Quando clicar no link “Apagar CAche” no menu dropwdow Autoptimize na barra da administração, você pode ver a mensagem “Seu cache pode não ter sido limpo com sucesso”. Neste caso vá até a página de configuração do Autoptimize e clique no botão “Salvar mudanças & e limpar o cache”.

Ademais, não se preocupe se seu cache nunca cai para 0 arquivos / 0 KB, já que o Autoptimize (desde a versão 2.2) vai automaticamente pré carregar o cache imediatamente após ter sido limpo para acelerar ainda mais a minificação.

Eu ainda posso usar o Rocket Loader do Cloudflare?

O Rocket Loader da Cloudflare é uma forma bem avançada, mas invasiva, de fazer o seu JavaScript não bloquear a renderização, que a Cloudflare ainda considera BETA. Algumas vezes o Autoptimize & o Rocket Loader trabalham bem, algumas não. A melhor tática é desativar o Rocket Loader, configurar Autoptimize e re-ativar o Rocket Loader (se você achar que vai ajudar) depois disto e testar se tudo funciona.

No momento (Junho 2017) parece que o RocketLoader pode quebrar o “CSS em linha e adiado” do AO, que é baseado no loadCSS do Filamentgroup, resultando no CSS adiado não sendo carregado.

Eu tentei o Autoptimize mas meu placar Google Pagespeed mal melhorou

Autoptimize não é um simples plugins do tipo “arrume meus problemas com o Pagespeed”;ele “apenas” agrega & e minifica JS & CSS (local) e permite alguns extras como remover Fontes Google ou adiando o carregamento do CSS. Como tal, Autoptimize vai permitir que você melhore o desempenho (tempo de carregamento em segundos) e também provavelmente vai ajudar a resolver alguns avisos específicos do Pagespeed. Se você quer melhorar ainda mais, você também provavelmente vai querer dar uma olhada em, por exemplo, cache de página, otimização de imagens e a configuração de seu servidor, que vai melhorar desempenho pra valer (novamente, tempo de carregamento como medido por exemplo pelo https://webpagetest.org) e notas de “melhores práticas de desempenho” no Pagespeed.

O que posso fazer com a API?

Um monte; existem filtros que você pode usar para desabilitar o Autoptimize condicionalmente por requisição, mudar as exclusões de CSS e JS, para mudar o limite de imagens de fundo CSS para serem colocadas em linha no CSS, para definir quais arquivos JS são movidos para trás do que está agregado, para mudar o atributo “defer” na tag script do JS agregado… há muitos exemplos de diversos filtros no arquivo autoptimize_helper.php_example e nesta FAQ.

Como funciona uma CDN?

Desde a versão 1.7.0, a CDN é ativada ao digitar o diretório raiz da CDN do blog (e.g. http://cdn.example.net/wordpress/). Se esta URL está presente, será usada para todos os arquivos gerados pelo Autoptimize (i.e. CSS e JS agregado), incluindo imagens de fundo no CSS (quando não estiver usando data-uri’s).

Se você deseja que as imagens que fez upload estejam na CDN também, você pode mudar o upload_url_path na sua configuração do WordPress (/wp-admin/options.php) para coincidir com o diretório de upload da CDN (e.g. http://cdn.example.net/wordpress/wp-content/uploads/). Leve em consideração que isto só funciona para imagens que forem enviadas a partir deste momento, não para as que já foram feitas upload. Obrigado a BeautyPirate pela dica (em inglês)!

Por quê minhas fontes não são colocadas na CDN também?

Autoptimize suporta isto, mas não é habilitado por padrão por quê fontes não locais podem requerer alguma configuração extra (em inglês). Mas se você tem suas políticas de requisição de origem cruzada em ordem (CORS policies), você pode dizer ao Autoptimize para colocar suas fontes na CDN usando um “hook” da API, configurando autoptimize_filter_css_fonts_cdn para true desta forma;

add_filter('autoptimize_filter_css_fonts_cdn',__return_true);
Eu estou usando Cloudflare, o que devo usar como diretório raíz da CDN

Nada, quando está na Cloudflare, seu CSS/JS autotimizado vai para a CDN do Cloudflare automaticamente.

Como posso forçar os arquivos agregado serem CSS ou JS estáticos ao invés de PHP?

Se o seu servidor estiver configurado adequadamente para lidar com compressão (gzip ou deflate) e expiração de cache (expiração e controle de cache com “cacheabilidade” suficiente), você não deve precisar que o Autoptimize cuide disto por você. Neste caso você deve marcar a opção “Salvar scripts/CSS agregados como arquivos estáticos?”, o que vai forçar o Autoptimize a salvar os arquivos agregados como arquivos .css e .js (o que significa que PHP não é necessário para servir estes arquivos). Esta configuração é a padrão desde o Autoptimize 1.8.

Como funciona o “Excluir scripts do Autoptimize”?

Otimização tanto de CSS e de JS podem deixar de agregar e minimizar códigos ao se adicionar “identificador” para a lista de exclusão, separados por vírgulas. O texto identificador exato pode ser determinado da seguinte forma:

  • se você quer excluir um arquivo específico, e.g. wp-content/plugins/funkyplugin/css/style.css, você pode simplesmente excluir “funkyplugin/css/style.css”
  • se você deseja excluir todos os arquivos de um plugin específicos, e.g. wp-content/plugins/funkyplugin/js/*, você pode, por exemplo, excluir “funkyplugin/js/” ou “plugins/funkyplugin”
  • se você deseja excluir código em linha, você vai ter que achar uma sequência de texto de única e específica no bloco de código e adicionar à lista de exclusão. Por exemplo: para excluir´funky_data=’Won\’t you take me to, Funky Town’`, o identificador é “funky_data”.
Configurando & Resolvendo Problemas com Autoptimize

Depois de instalar e ativar o plugin, você terá acesso à página de administração onde você pode habilitar a otimização de HTML, CSS e JavaScript. De acordo com seu gosto, você pode simplesmente ativar todos, ou se você for mais cauteloso, um de cada vez.

Se o seu blog não funciona normalmente após ligar o Autoptimize, aqui tem algumas indicações para identificar & resolver certos problemas usando “configurações avançadas”:

  • Se está tudo funcionando mas você nota que seu blog está mais lento, certifique-se que você tenha um plugin de cache instalado (WP Super Cache ou similar) e verifique a informação sobre tamanho de cache (a solução para o problema também impacta a performance de páginas sem cache) que estão nesta FAQ.
  • No caso de seu blog parecer estranho, i.e. o layout fica bagunçado, então existe um problema com a otimização do CSS. Neste caso, você pode ligar a opção “Buscar estilos somente na seção <head>?” e ver se resolve o problema. Você tambem pode forçar o CSS não ser agregado, colocando ele entre tags “noptimize” no seu tema ou widget, ou adicionando o nome do arquivo (para folhas de estilo externas) ou sequência de texto (para estilos em linha) à lista de exclusão.
  • Caso alguma funcionalidade do seu site pare de funcionar (um carrousel, um menu, a busca, …) provavelmente você está com problema de otimização de JavaScript. Desabilite a opção “Agregar JS em linha” e ative “Forçar Javascript na <head>?” e tente novamente. Excluir ´jquery.js´ da otimização (veja abaixo) e opcionalmente ativar “Adicionar encapsulamento try/catch” (em inglês) também pode ajudar. Alternativamente — para os com experiência técnica — você pode excluir scripts específicos do tratamento (mover e/ou agregar) do Autoptimize adicionando um trecho de texto que vai corresponder com o Javascript dando problema, ou excluí-lo do seu arquivo de template ao encapsular o código entre tags “noptimize”. Identificar o Javascript problemático e escolher o texto correto para a exclusão é algo de tentativa e erro, mas na maioria dos casos os problemas com otimização de JavaScript são resolvidos desta forma. Quando depurando problemas de JavaScript, o console de erros do seu navegador é a ferramenta mais importante para descobrir o que está acontecendo.
  • Se seu tema ou plugin requer JQuery, você pode tentar forçar tudo no <head> e/ou excluir jquery.js (e plugins JQuery, se necessário).
  • Se você não consegue fazer funcionar a otimização de CSS ou de JS, você pode continuar usando as outras duas técnicas de otimização.
  • Se você tentou as dicas para resolver problemas acima e ainda não consegue fazer o CSS ou JS funcionar, você pode pedir suporte no fórum de suporte WordPress do Autoptimize. Veja abaixo a descrição da informação que você deveria prover no seu “pedido de ajuda”.
Socorro, apareceu uma página em branca ou “internal server error” depois de habilitar o Autoptimize!!

Antes de tudo, certifique-se que você não está usando outro plugin de minificação de HTML, CSS ou JS (BWP minify, WP minify, …) simultaneamente ao Autoptimize ou desabilite esta funcionalidade no seu plugin de cache (W3 Total Cache, WP Fastest Cache, …).

Em alguns casos raros o componente de vinificação de CSS atualmente usado pelo Autoptimize trava devido à falta de recursos (veja uma explicação técnica detalhada aqui). Você pode ou desabilitar a otimização de CSS, tentar excluir CSS específicos de serem agregados ou ativar os minificadores legados que não têm este problema. Esta última opção pode ser feita ao adicionar isto ao wp-config.php:

define("AUTOPTIMIZE_LEGACY_MINIFIERS","true");

Os “minificadores legados” vão continuar no Autoptimize “para sempre” e mudanças no wp-config.php não são afetadas pelas atualizações de temas, plugins ou dos arquivos básicos, então tudo deve correr bem.

Mas eu ainda tenho arquivos CSS ou JS “autoptimizados” em branco!

Se você está usando Apache, o arquivo htaccess escrito pelo Autoptimize pode, em alguns casos, entrar em conflito com as configurações AllowOverrides da configuração de seu Apache (como no caso da configuração padrão de alguns Ubuntu), o que resulta em “internal server errors” nos arquivos CSS e JS do Autoptimize. Isto pode ser resolvido configurando AllowOverrides para All (em inglês).

Não aparecem erros, mas minhas páginas não são otimizadas?

Autoptimize faz uma série de verificações antes de realmente otimizar. Quando uma das condições abaixas for verdadeira, suas páginas não serão otimizadas:

  • quando no personalizador
  • Se não tiver uma tag <html abrindo
  • se tiver <xsl:stylesheet na resposta (o que indica que a resposta não é HTML, mas XML)
  • se tiver <html amp na respostas (já que páginas AMP já são otimizadas)
  • Se o resultado é um feed RSS (função is_feed())
  • Se o resultado é uma página de administração do WordPress (função is_admin())
  • Se a página for solicitada com ?ao_noptimize=1 na URL
  • se o código se conecta ao Autoptimize para desabilitar otimização (veja o tópico sobre o Visual Composer)
  • Se outros plugins usarem o buffer de saída de forma incompatível (desative outros plugins seletivamente para identificar o causador)
Visual Composer, Beaver Builder e soluções similares para construir páginas estão quebradas!!

Desative a opção de Autoptimizar também para usuários logados e divirta-se arrastando e soltando 😉

Ajuda, o checkout/pagamento de minha loja não funciona!!

Desativa a opção de optimizar páginas carrinhos/checkout (funciona para WooCommerce, Easy Digital Downloads e WP eCommerce).

Revolution Slider está quebrado!

Certifique-se que js/jquery/jquery.js está numa lista de exclusões de JS separadas por vírgulas (ele é excluído na configuração padrão).

Estou recebendo erros “jQuery não está definido”

Neste caso você tem um JavaScript não agregado que requer que o jQuery seja carregado, então você terá que adicionar js/jquery/jquery.js a uma lista de exclusão de JS separada por vírgula.

Eu uso NextGen Galleries e váriso JS não agregados/minificados?

O plugin NextGen Galleries faz algumas coisas estilosas para adicionar JavaScript. Para que o Autoptimize possa agregar isto, você ou desativa o gerenciamento de recursos do Nextgen Gallery com este trecho de código add_filter( 'run_ngg_resource_manager', '__return_false' ); ou você pode configurar o Autoptimize para inicializar mais cedo, adicionando isto a seu arquivo wp-config.php: define("AUTOPTIMIZE_INIT_EARLIER","true");

O que é noptimize?

Começando na versão 1.6.6 o Autoptimize exclui tudo dentro de tags noptimize, e.g.:

 <!--noptimize--><script>alert('this will not get autoptimized')></script><!--/noptimize-->

Você pode fazer isto no conteúdo de sua página ou post, nos widgets e nos arquivos de seu tema (considere criar um tema filho par evitar que seu trabalho seja substituído quando houver atualização do tema).

Posso mudar o diretório & nome de arquivo dos arquivos do autoptimize em cache?

Sim, se você deseja servir arquivos de, por exemplo, /wp-content/resources/aggregated_12345.css ao invés do padrão /wp-content/cache/autoptimize/autoptimize_12345.css, então adicione isto ao seu wp-config.php

define('AUTOPTIMIZE_CACHE_CHILD_DIR','/resources/');
define('AUTOPTIMIZE_CACHEFILE_PREFIX','aggregated_');
O JS e o CSS gerados podem ser pré-gzippados?

Sim, mas isto é desligado por padrão. Você pode habilitar passando ‘true’ para ‘autoptimize_filter_cache_create_static_gzip’. Obviamente, você vai precisar configurar seu servidor para usar estes arquivos ao invés dos não-gzippados para evitar excesso de carga na compressão durante execução.

O que “remover emoji’s” faz?

Esta nova opção em Autoptimize 2.3 remove o CSS em linha, o JS em linha e o arquivo JS linkado pelo WordPress básico. E desta forma pode ter um impacto positivo no desempenho de seu site.

“Remover parâmetros da URL” é útil?

Embora algumas ferramentas de avaliação de desempenho coloquem “parâmetros de versão na URL” como um problema de performance, em geral este impacto é quase inexistente. Portanto, desde a versão o Autoptimize permite que você remova os parâmetros (ou mais precisamente, o parâmetro “ver”), mas marcar “Remover variáveis da url de recursos estáticos” vai ter pouco ou nenhum impacto no desempenho do seu site ao medir os (mili)segundos

(Como) devo otimizar as Fontes Google?

Tipicamente as Fontes Google são carregadas por um arquivo CSS linkado que bloqueia a renderização. Se você tiver um tema e plugins que usam Fontes Google, você pode acabar com vários destes arquivos. Autoptimize (desde a versão 2.3) agora deixa você diminuir o impacto das Fontes Google seja removendo elas totalmente ou otimizando o jeito que elas são carregadas. Estes são os dois “sabores” de otimização; o primeiro é “combinar e linkar”, que substitui todas as requisições para Fontes Google numa única requisição, o que ainda pode bloquear a renderização mas vai permitir as fontes serem carregadas imediatamente (significando que você não vai ver as fontes mudando enquanto a página está carregando). A alternativa é “combinar e carregar de forma assíncrona”, que usa JavaScript para carregar as fontes de forma a não bloquear a renderização mas que pode causar o texto a “piscar” quando a fonte for carregada.

Devo usar “preconnect”?

Preconnect é uma funcionalidade um tanto avançada que instrui navegadores (se eles suportarem) a fazerem uma conexão a domínios específicos, mesmo que a conexão não seja necessária de imediato. Isto pode ser usado, por exemplo, para diminuir o impacto de recursos de terceiros (já que requisições DNS, conexões TCP e negociação SSL/TLS são executadas mais cedo). Use com cuidado, já que pré conectar a muitos domínio pode ser contraprodutivo.

Quando (não)posso usar JS assíncrono?

Arquivos JavaScript que não são autoptimizados (por quê eles foram excluídos ou estão hospedados em outros lugares) tipicamente bloqueiam a renderização. Ao adicioná-los no campo “async JS”, Autoptimize irá usar o parâmetro async fazendo com o que o navegador carregue estes arquivos de forma assíncronamente (i.e. sem bloquear a renderização). Isto pode potencialmente quebrar o seu site (página), e.g. se você colocar “js/jquery/jquery.js” assíncrono você provavelmente verá erros do tipo “JQuery is not defined”. Use com cuidado.

Onde posso conseguir ajuda?

Você pode obter ajuda no fórum de suporte do wordpress.org (em inglês). Se você tem 100% de certeza que este é um problema que não pode ser resolvido usando a configuração do Autoptimize e que, de fato, descobriu um erro no código, você pode criar um incidente no Github (em inglês). Se você está em busca de suporte premium, consulte nossos Serviços de Suporte Profissional e Serviços de Otimização.

Desisti, como eu deveria remover Autoptimize?
  • Desabilita o plugin (isto vai remover as opções e o cache)
  • Remova o plugin
  • Limpe qualquer cache que talvez possa ter páginas que referenciam CSS/JS “Autoptimizadas” (e.g. de um plugin como o WP Super Cache)
Como posso ajudar/contribuir?

Apenas faça um fork do Autoptimize no Github e programe!

Avaliações

Optimize? Yeah, right

Do not use this plugin. Ever. It doesn’t fix anything and most of the time the results of PageSpeed/real load time is even worse after activating it than it was before…

If you consider performance important, you really should not even think of using this plugin…

When Autoptimize Plugin is active error

Dear Team,

From 2 days Autoptimize Plugin is not working when it is in active mode i am not able to see any images in our woocommerce website as soon as i disable the plugin i can see all the images back again. so there is error in the plugin i guess can any one help me out in this issue.

Thanks in advance

Great support

Even if this is a free plugin, the support is outstanding. They reply to your doubts fast and nice. Recommended.

Legendary

This plugin is IMHO the most suggested when it comes to optimization. And it is a fine work. Plus the support: when other plugin developers with much lesser downloads let their audience alone in the dark, Frank answers quick and helpful.
Thanks.

Leia todas as 640 avaliações

Contribuidores e desenvolvedores

“Autoptimize” é um software com código aberto. As seguintes pessoas contribuíram para este plugin.

Contribuidores

“Autoptimize” foi traduzido para 21 localidades. Obrigado aos tradutores por suas contribuições.

Traduzir “Autoptimize” para o seu idioma.

Interessado no desenvolvimento?

Navegue pelo código, dê uma olhada no repositório SVN ou assine o registro de desenvolvimento via RSS.

Registro de alterações

2.3.4

  • correção de erros: is_plugin_active estava causando erros em alguns casos como reportado por @iluminancia e @lozula (em inglês)
  • correção de erro: domínio de idioma adicionado a 4 funções __/_e, un grand merci ao Guillaume Blet!

2.3.3

  • melhoria: atualizado para a versão mais recente do loadCSS do Filamentgroup
  • Melhoria: por padrão, excluir wp-content/cache e wp-content/uploads da otimização do CSS(Divi, Avada & possivelmente outros plugins guardam CSS específico para páginas neste lugares)
  • correção de erro: impedir blocos try/catch duplos
  • diversas corrreções de erros (veja o registro de commit do GitHub)
  • Atenção: isto é (supostamente) o último lançamento menor no ramo 2.3, 2.4 é uma mudança grande com várias mudanças funcionais e debaixo do capô

2.3.2

  • Solução para dados de opções velhos em caches de objeto externo tal como Redis, Memcached (defeito do core) resultando no Autoptimize continuamente executando o procedimento de atualização, inclusive limpando o cache e tentando fazer o pré carregamento de requisições HTTP com “cachebuster” no parâmetro da URL, obrigado a Haroon Q. Raja e Tomas Trkulja pela grande assistência!
  • correções para avisos “undefined index” na página configurações Extra
  • agora remove as respectivas dicas de recursos dns-prefetch quando “remover emojis” estiver ativo ou quando Fontes Google forem otimizadas ou removidas.
  • código JS do webfont.js mudado para adiado ao invés de assíncrono para certificar que o arquivo JS ou fontes não sejam consideradas bloqueadoras de renderização.

2.3.1

  • correção para incidente no código de atualização em algumas circunstâncias, obrigado ao Rajendra Zore por reporter & e ajudar a corrigir!

2.3.0

2.2.2

  • Retrocesso à uma versão mais bem testada do minificador CSS
  • ajustes no menu Autoptimize na barra de ferramentas (visual + tempo esgotado da chamada AJAX “apagar cache”)
  • atualização do leiame

2.2.1

  • correção para imagens referidas no CSS não sendo transportadas para o caminho correto, levando a erros 404 como reportado por Jeff Inho
  • correção para o error “operator not supported for strings” no PHP7.1 como reportado por falk-wussow.de
  • correção para quebra da hash de segurança do cache AO’s em alguns casos (especialmente no 2.1.1)

2.2.0

  • novidade: Autotpimize minimiza primeiro (armazenando os fragmentos individuais) e agrega os fragmentos minificados, resultando em melhoras de desempenho enormes em relação a JS/CSS não cacheados.
  • novidade: opção para ativar/desativar AO para usuários conectados (ligado por padrão)
  • novidade: opção para ativar/desativar AO nas páginas carrinhos/checkout do WooCommerce, Easy Digital Downloads ou WP ecommerce (ligado por padrão)
  • melhoria: mudança para rel=preload + loadCSS do Filamentgroup para o carregamento adiado
  • melhoria: mudança para o minificador de CSS YUI PHP=port 2.8.4-p10 (ou seja, ainda não é o brach 3.x)
  • melhoras na lógica de quais JS/CSS devem ser otimizados (função getPath), aumentando a confiança no processo de agregação.
  • segurança: a substituição do placeholder agora é menos ingênua para proteger contra vulnerabilidade LFI e XSS como reportado por Matthew Barry e corrigido com ajuda do Matthew e Tomas Trkulja. Obrigado, caras!!
  • API: vários filtros extras, fazendo AO (ainda) mais flexível.
  • Um monte de correções de erros e melhorias menores (veja o log de commit no GitHub)
  • testado e confirmado que funciona em WordPress 4.8

2.1.2

  • correção para quebra da hash de segurança do cache AO’s em alguns casos (especialmente no 2.1.1)
  • Idêntico ao 2.10, exceto pela correção de segurança do 2.2.0

2.1.1

  • Idêntico ao 2.10, exceto pela correção de segurança do 2.2.0

2.1.0

  • novidade: o Autoptimize agora aparece na barra de ferramentas do admin com uma visualização fácil para o tamanho do ache e a possibilidade de limpar o cache (passe false para o filtro autoptimize_filter_toolbar_show para desabilitar), um grande obrigado ao Pablo Custo pelo trabalho duro nesta funcionalidade bacana!
  • novo: Uma aba extra, “Mais Otimização”-é mostrada (e pode ser escondida com o filtro ´autoptimize_filter_show_partner_tabs´) com informação de serviços e ferramentas de otimização relacionadas.
  • novidade: se o cache fica muito grande, um email será enviado ao administrador do site (passe false para o filtro autoptimize_filter_cachecheck_sendmail para desabilitar ou passe um email alternativo para o filtro autoptimize_filter_cachecheck_mailto para mudar o endereço do email)
  • novo: usuários avançados podem habilitar o Autoptimize para já colocar os arquivos autoptimizados com gzip, passando true para o filtro autoptimize_filter_cache_create_static_gzip, joínha ao (Draikin)[https://github.com/Draikin] por isto!
  • melhoria: GUI do admin atualizada (novamente, obrigado Pablo!) com alguma responsividade adicionado ao mix (deixando de mostrar a coluna da direita em telas menores)
  • melhoria: a página de configuração agora aceita URLs com protocolo relativo para a URL base da CDN
  • Melhoria: novos (e melhores) padrões para a otimização JS (não forcar em “head” + excluir jquery.js) e CSS (incluir CSS em linha)
  • Diversas correções de falhar & pequenas melhorias (veja o log de commit no GitHub)
  • Versão mínima atualizada de 2.7 (!) para 4.0
  • Testado e confirmado que funciona com WordPress 4.6 beta 4

2.0.2

  • correção: desabilita mover JS não-agregado como padrão (pode ser rehabilitado ao passar false para autoptimize_filter_js_unmovable)
  • correção: hook autoptimize_action_cachepurged em init a fim de evitar a mensagem de erro horrível para usuários do ZenCache (Comet Cache)
  • correção que permite ao Autoptimize trabalhar com o PHP 5.2, embora você realmente deva atualizar (em inglês)

2.0.1

  • Melhoria: Autoptimize agora tenta expurgar o cache da WP Engine quando o cache do AO é limpo
  • Melhoria: o Autoptimize não irá otimizar páginas AMP (que já são bem otimizadas) para evitar problemas com e.g. “inline & defer” e com AO adicionando atributos para tags link que não são autorizadas no subconjunto de HTML do AMP
  • Melhoria: o mecanismo de expurgo do cache foi refatorado (código duplicado foi removido, agora usa o próprio hook de ação autoptimize_action_cachepurged do AO)
  • Melhoria: Rehabilita funcionalidade para mover JS não-agregado se ” Também agregar JS em linha” estiver ativo (pode ser desabilitado com o filtro autoptimize_filter_js_unmovable)
  • Melhoria: tags de script com atributo data-noptimize também serão excluídas da otimização
  • Correção: suporte melhor para diretórios wp-content renomeados.
  • Correção: múltiplas correções para o CSS/JS injetado ao final (mudanças nestes arquivos não eram sempre percebidas, fontes ou imagens de fundo não estavam sendo enviadas para CDN, …)
  • Correções & melhorias variadas, leia o log do commit no GitHub se você for curioso assim.
  • Testado & confirmado que funciona com WordPress 4.5 (beta 3)

2.0.0

  • Na média, minificação 30% mais rápida (mais info neste post do blog)!
  • Novidade: Opção para (de)ativar agregação do JS e CSS em linha.
  • Novidade: Opção para remover Fontes Google.
  • Nov: o tamanho do cache será verificado diariamente e um aviso será mostrando no wp-admin se o cache ir acima de 512 MB (pode ser mudado por filtro).
  • Novo: CSS pequeno autoptimizado (menos de 256 caracteres, pode ser mudado por filtro) será colocado em linha ao invés de linkado.
  • Novo na API: filtros para declarar uma lista segura de JS e CSS, onde apenas os arquivos na lista segura são otimizados e todas as outras são deixadas intocadas.
  • Novo na API: filtros para declarar uma lista segura de JS e CSS, onde apenas os arquivos na lista segura são otimizados e todas as outras são deixadas intocadas.
  • Novo na API: filtro para mover as fontes para a CDN também.
  • muitas correções pequenas e grandes, não vou te incomodar uma lista completa, mas dê uma olhada no log de commmit no GitHub (em inglês.
  • testado e confirmado que funciona com PHP7

1.9.4

  • correção: certifica que minificadores que não sejam do Autoptimize não recebam 2 parâmetros (já que alguns esperam por apenas um, o que resultava em erro interno do servidor – Erro 500), baesado no reporte de zerooverture e zamba
  • correção: hook add_action padrão volta a ser “template_redirect” ao invés de “init” para corrigir múltiplos problemas como reportado por schecteracademicservices, bond138, rickenbacker,Rick Sported ewizard. Se você precisa inicializar o Autoptimize mais cedo (e.g. quando estiver usando Nextgen Galleries), então adicione isto a seu wp-config.php

1.9.3

  • Melhoria: lógica de substituição de CDN mais inteligente, obrigado Squazz por reportar e testar
  • melhoria: permite que strings (comentários) sejam excluídas da otimização do HTML (remoção de comentários)
  • melhoria: mudança na prioridade com que AO é acionado pelo WordPress, solucionando JS não serem agregados se o NextGen Galleries estiver ativo, feito com grade ajuda de msebald
  • Melhoria: strings de exclusão de JS extras: gist.github.com, text/html, text/template, wp-slimstat.min.js, _stq, nonce, post_id (os últimos dois foram removidas da lista “manual” na página de configurações)
  • novidade na API: autoptimize_filter_html_exclude, autoptimize_filter_css_defer, autoptimize_filter_css_inline, autoptimize_filter_base_replace_cdn, autopitmize_filter_js_noptimize, autopitmize_filter_css_noptimize, autopitmize_filter_html_noptimize
  • correção: alguns aviso de PHP foram removidos, como reportado por dimitrov.adrian
  • correção: se certifica que otimização de HTML não engole um espaço antes de um “cite” como proposto por ecdltf
  • correção: limpar o cache não estava funcionando para diretórios não-padrão como reportado por NoahJ Champion
  • yui compressor php port 2.4.8-4 atualizado
  • Tradução em árabe adicionada, agradecimentos ao ekleel team
  • testado com WordPress 4.2 beta 3

1.9.2

Em primeiro lugar; Boas festas, um ótimo 2015!!

  • Novo: suporte para diretório de cache e prefixo de arquivo alternativo como requisitado por Jassi Bacha, Cluster666 e Baris Unver.
  • Melhoria: força a exclusão de todos os objetos JSON linked-data (script type=application/ld+json)
  • Melhoria: diversos filtros adicionados à API, e.g. para alterar o HTML, CSS ou JS otimizado.
  • Correção: volta a prioridade do Autoptimize de 11 para 2 para evitar que algumas páginas não sejam otimizadas (obrigado a CaveatLector por investigar & reportar)
  • Correção (em YUI-CSS-compressor-PHP-port): não converte booleanos para porcentagem em rotate3D-transforms (de acordo com bugreport on Github)
  • Correção: imagens de fundo com um espaço no caminho não carregavam, reportado por johnh10.
  • Correção: imagem SVG com fill:url quebradas após a otimização de CSS como reportado por Trama
  • Tradução para Sueco atualizada, nova tradução para Ucraniano porZanatoly of SebWeo.com
  • readme.txt atualizado
  • Confirmado que funciona com WordPress 4.1

1.9.1

1.9.0

  • “Adiar e colocar CSS em linha” permite especificar qual “CSS acima da dobra” deveria ser em linha, enquanto o CSS normal é adiado.
  • Imagens de fundo em linha codificadas como Base64 agora também serão colocadas na cache e o limite para imagens em linha subiu para 4096 (era 2560).
  • Diretórios separados de cache para CSS e JS em /wp-content/cache/autoptimize, o que deve resultar em melhorias na limpeza do cache (e em alguns casos, talvez também para servir os arquivos agregados).
  • CSS agora é adicionado antes da tag , e o JS antes de </body> (e depois de “title” quando forçado em <head>). Isto pode ser modificado via API.</li> <li>Alguns aperfeiçoamentos de usabilidade na página de administração</li> <li>Diversos hooks adicionados à API, como filtros para não agregar CSS ou JS em linha e filtros para agregar mas não minificar CSS ou JS.</li> <li>Traduções atualizadas para Holandês, Francês, Alemã, Persa e Polonês, e novas traduções para Português Brasileiro (obrigado a <a href="http://tobeguarany.com/" rel="nofollow">Leonardo Antonioli</a>) e Turco (kudos a <a href="http://beyn.org/" rel="nofollow">Baris Unver</a>)</li> <li>Múltiplas correções & e melhorias</li> <li>Testado com WordPress 4.0 rc3</li> </ul> <h4>1.8.5</h4> <ul> <li>Atualizado para a versão mais recente do <a href="https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/" rel="nofollow">componente de minificação de CSS</a></li> <li>melhoria: para mulsites, o cache agora é gravado em diretórios separado, evitando que um site limpe o cache da instalação inteira. Código <a href="https://wordpress.org/support/topic/multisite-blog-admin-can-delete-entire-network-cache" hreflang="en" rel="nofollow">contribuído por Joern Lund</a></li> <li>Melhoria: adicionado o cabeçalho do plugin WordPress ao autoptimize_helper.php_example para tornar mais fácil habilitá-lo como módulo</li> <li>Melhoria: nonce e post_id são adicionados à configuração padrão para exclusão de JS</li> <li>Melhoria: explicitamente exclui wp-admin da Autoptimização</li> <li>Correção: plupload.min.js, syntaxhighlighter e “adsbygoogle” excluídos da agregação JS.</li> <li>Correção: evita duas tags </body> quando o Autoptimize adiciona Javascript ao HTML como <a href="https://wordpress.org/support/topic/works-like-a-charm-but-i-have-two-problems" rel="nofollow">reportado por Can</a></li> <li>Correção: faz o .htaccess compatível tanto com Apache 2.2 quanto com 2.4 (https://wordpress.org/support/topic/feature-request-support-generating-htaccess-files-for-apache-24?replies=3)</li> </ul> <h4>1.8.4</h4> <ul> <li>Correção: código JS (ou CSS) em linha pode ser encapsulado dentro de comentários HTML, mas estes foram removidos desde 1.8.2 como parte de uma correção de falha.</li> </ul> <h4>1.8.3</h4> <ul> <li>Correção: evita que avisos inúteis em is_callalble inundem o log de erros de PHP como <a href="https://wordpress.org/support/topic/182-breaks-css-and-js?replies=14#post-5377604" hreflang="en" rel="nofollow">reportado por Praveen Kumar</a> (em inglês)</li> </ul> <h4>1.8.2</h4> <ul> <li>Melhoria: mais degradação suave quando a classe minificador existe mas o método não, baseado em um <a href="https://wordpress.org/support/topic/confict-with-dynamic-to-top" hreflang="en" rel="nofollow">reporte de erros por Franck160</a> (em inglês)</li> <li>Melhoria: o CSS adiado também é adicionado nas tags “noscript”</li> <li>Melhoria: diferenciação entre versões de Apache no arquivo .htaccess como sugerido por <a href="http://www.imadalin.ro/" hreflang="ro-RO" rel="nofollow">iMadalin</a> (em romeno)</li> <li>Melhoria: também agrega URIs CSS/JS sem protocolo (como <a href="https://wordpress.org/support/topic/protocol-less-url-support" hreflang="en" rel="nofollow">sugerido por Ross</a></li> <li>Melhoria: desabilita autoptimização baseado em parâmetro na query string (para depuração)</li> <li>Correção: alguns CSS importados não estava sendo agregado/minificados</li> <li>correção: adiciona o CSS antes da tag “title” de abertura e não depois tag para fechar, evitando que o CSS seja carregado na ordem errada, como reportado por <a href="http://fotoandfashion.de/" hreflang="de" rel="nofollow">fotofashion</a> e <a href="http://www.blog-it-solutions.de" hreflang="de" rel="nofollow">blogitsolutions</a> (obrigado, pessoal)</li> <li>Correção: certifica-se que javascript ou CSS entre comentários não é agregado como reportado por <a href="https://wordpress.org/support/topic/the-optimized-css-contains-duplicate-classes" hreflang="en" rel="nofollow">Milap Gajjar</a></li> <li>Testado com Wordpres 3.9 (beta 1)</li> <li>Atualizações na FAQ</li> </ul> <h4>1.8.1</h4> <ul> <li>correção: CSS em comentários condicionais não estavam sendo excluídos da agregação como reportado por <a href="http://www.finkbeiner-holz.de/" hreflang="de" rel="nofollow">Rolf</a> e <a href="http://www.wordpress-hebergement.fr/" hreflang="fr" rel="nofollow">bottapress</a> (em alemão e francês)</li> </ul> <h4>1.8.0</h4> <ul> <li>Novo: opção para deixar todo o CSS em linha <a href="https://wordpress.org/support/topic/make-style-sheet-inline" hreflang="en" rel="nofollow">como sugerido por Hamed</a></li> <li>Novo: conjunto de filtros que proveem uma API simples para modificar o comportamento do Autoptimize (e.g. substituir “defer” por “async”, desabilitar Autoptimização em certas páginas, especificar scripts para não serem agregados ou movidos após o agregado (ref: https://wordpress.org/support/topic/feature-request-some-extra-options?replies=14), tamanho da imagem para transformar em data-uri). Mais informação no arquivo autoptimize_helper.php_example.</li> <li>Melhoria: exclui (css em) tags no script como <a href="https://wordpress.org/support/topic/feature-suggestion-noscript-for-css" hreflang="en" rel="nofollow">proposto por belg4mit</a></li> <li>Melhoria: mudada a forma padrão de servir arquivos CSS/JS de PHP para arquivos estáticos.</li> <li>Atualizado o <a href="https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/commit/fb33d2ffd0963692747101330b175a80173ce21b" hreflang="en" rel="nofollow">mitificado CSS de “upstream”</a> (em inglês)</li> <li>Melhoria (força gzip dos arquivos estáticos) e Correção (força expiração para arquivos dinâmicos, graças a <a href="http://www.column-razenberg.nl/" hreflang="nl" rel="nofollow">Willem Razenberg</a> (em holandês) no .htaccess</li> <li>Melhoria: degradação suavizada quando as coisas dão errado (e.g. importação de CSS resultando em arquivos CSS agregados vazio <a href="https://wordpress.org/support/topic/very-good-332" hreflang="en" rel="nofollow">reportado por Danka</a> ou quando o tema está quebrado <a href="https://wordpress.org/support/topic/js-optimization-break-site-white-page-issue?replies=14#post-5038941" hreflang="en" rel="nofollow">como visto por Prateei Gupta</a>)</li> <li>Traduções atualizadas e Polonês adicionado (obrigado <a href="http://www.sierpinski.pl/" rel="nofollow">Jakub Sierpinski</a>).</li> <li>Correção: evita que diretivas “import” nos comentários CSS sejam levados em consideração <a href="http://www.blog-it-solutions.de/" rel="nofollow">agradecimento a Josef da blog-it-solutions.de</a></li> <li>Correção: correção de blur quando o CSS quebra como <a href="http://blog.clickpanic.com/" hreflang="en" rel="nofollow">reportado por Chris da clickpanic.com</a> (em inglês)</li> </ul> <h4>1.7.3</h4> <ul> <li>melhoria: remove o cache + opções na desinstalação conforme <a href="https://wordpress.org/support/topic/wp_options-entries" hreflang="en" rel="nofollow">requisitado por Gingerbreadmen</a> (em inglês)</li> <li>melhoria: configura .htaccess para permitir execução de PHP em wp-content/cache/autoptimize quando salvar arquivos otimizados como PHP, como sugerido por (David Mottershead da bermuda4u.com)[http://www.bermuda4u.com/] mas proíbe execução de PHP quando salvar os scripts/css agregados como arquivos estáticos (exceto para multisite).</li> <li>correção: evita que os sitemaps Coast SEO fiquem em branco (devido à otimização do XML/XSL dinamicamente construídos do Coast) como reportado por <a href="http://www.icefishing.co" hreflang="en" rel="nofollow">Vance Hallman</a> (em inglês) and <a href="http://solar-flag-pole-lights.com/" hreflang="en" rel="nofollow">Armand Hadife</a> (em inglês). Mais informação sobre este problema <a href="http://blog.futtta.be/2013/12/09/blank-yoast-seo-sitemaps-no-more/" hreflang="en" rel="nofollow">pode ser encontrada em meu blog</a> (em inglês).</li> <li>pequenas mudanças no readme.txt</li> </ul> <h4>1.7.2</h4> <ul> <li>Melhoria: verificações extras no gerenciamento de @import do CSS + mover regras “import” para o topo do CSS se não for importado com sucesso, baseado em reports de erros do a.o. <a href="https://wordpress.org/support/topic/zero-lenght-file-with-css-optimization" hreflang="en" rel="nofollow">por ozum</a> e por <a href="https://wordpress.org/support/topic/cant-activate-plugin-22?replies=13#post-4891377" hreflang="ne" rel="nofollow">Peter Stolwijk</a> (em inglês).</li> <li>melhoria: verifica se as classes minificadoras de JS e CSS existem e carrega somente se elas não evitarem possíveis conflitos com outros temas ou plugins que já carregaram minificadores.</li> <li>testado e aprovado para WordPress 3.8 (beta1)</li> </ul> <h4>1.7.1</h4> <ul> <li>Novo: suporte para domínios mareados como sugerido por <a href="http://tiremoni.com/" hreflang="de" rel="nofollow">Michael da tiremoni.com</a> (em alemão)</li> <li>Adicionado um .htaccess a wp-content/cache/autoptimize para sobrescrever outras diretrizes de cache (na verdade corrigindo um problema com o .htaccess do WP Super Cache <a href="https://wordpress.org/support/topic/expiresmax-age-compatibility-with-supercache" hreflang="en" rel="nofollow">como reportado</a> por <a href="http://www.unitedworldschools.org/" hreflang="en" rel="nofollow">Hugh of www.unitedworldschools.org</a>. links em inglês)</li> <li>correção: Autoptimize quebra data:uris no CSS em alguns casos, como reportado por <a href="http://www.blog-it-solutions.de/" rel="nofollow">Josef do blog-it-solutions.de</a> (em alemão).</li> <li>correção: evita aviso PHP se a lista de exclusão CSS estiver vazia</li> <li>imagem “do not donate” movida no plugin</li> </ul> <h4>1.7.0</h4> <ul> <li>Novo: exclui CSS</li> <li>Novo: adia CSS</li> <li>Componentes de minimização atualizados (JSMin & YUI PHP CSSMin</li> <li>Página de administração atualizada, escondendo opções de configuração avançadas</li> <li>Suporte à CDN atualizado para aumentar simplicidade (código & Interface), incluindo mudar a imagem de fundo no CSS</li> <li>Atualizado: novas traduções feitas por <a href="http://www.wordpress-hebergement.fr/" hreflang="fr" rel="nofollow">Francês: wordpress-hebergement.fr</a>, <a href="http://basics.ir/" hreflang="fa" rel="nofollow">Persa: Hamed Irani</a>, <a href="http://sulo.se/" hreflang="se" rel="nofollow">Sueco: Jonathan Sulo</a>, <a href="http://www.blog-it-solutions.de/" hreflang="de" rel="nofollow">Alemão: blog-it-solutions.de</a> e Holandês.</li> <li>Suporte para YUI removido</li> <li>Expurga o plugin de cache HTML quando expurga o do Autoptimize</li> <li>correção para marcador BOM nos arquivos CSS <a href="https://wordpress.org/support/topic/sidebar-problem-42" hreflang="en" rel="nofollow">como visto no tema Frontier</a> (em inglês), kudoa a <a href="http://convertertoolz.com/" hreflang="en" rel="nofollow">Download Converter</a>(em inglês) por reportar!</li> <li>correção para <a href="https://wordpress.org/support/topic/javascript-optimize-breaks-twentythirteen-mobile-menu" hreflang="en" rel="nofollow">desaparecimento de scripts de 3.os sem protocolo </a>, obrigado por reportar, p33t3r!</li> <li>correção para folhas de estilo sem type=”text/css” não sendo autoptimizadas como reportado por <a href="http://cocobeanproductions.com/" hreflang="en" rel="nofollow">renzo</a> (em inglês)</li> <li>testado com WordPress 3.7 beta2 (adminbar.min.js adicionado aos scripts automaticamente excluídos)</li> </ul> <h4>1.6.6</h4> <ul> <li>Novidade: desativar autoptimização ao colocar parte do HTML, JS ou CSS entre tags noptimize, e.g.;<br /> <!--noptimize-->alert(‘isto não será autoptimizado’);<!--/noptimize--></li> <li>Verificação extra adicionada para prevenir que arquivos de plugin sejam chamados fora do WordPress como sugerido neste <a href="http://mikejolley.com/2013/08/keeping-your-shit-secure-whilst-developing-for-wordpress/" hreflang="en" rel="nofollow">bom artigo sobre segurança</a>.</li> <li>Aviso pequeno adicionado para ser mostrado após instalação/ativação para pedir que o usuário configure o plugin.</li> <li>Tradução para Persa adicionada, obrigado a <a href="http://basics.ir/" hreflang="fa" rel="nofollow">Hamed T.</a> (em persa)</li> </ul> <h4>1.6.5</h4> <ul> <li>nova opção “debugar javascript” para forçar o javascript agregado na seção <code>head</code> do HTML ao invés do final.</li> <li>Compressão & CDN pelo YUI agora são funcionalidades obsoletas que serão removidas em 1.7.0</li> </ul> <h4>1.6.4</h4> <ul> <li>correção para o aviso de PHP sobre mfunc_functions</li> <li>correção para avisos strpos devido a valores vazios na configuração “Excluir scripts do autoptimize” como <a href="https://wordpress.org/support/topic/empty-needle-warning" hreflang="en" rel="nofollow">reportado por CandleFOREX</a> (em inglês).</li> <li>correção para feeds quebrando como <a href="https://wordpress.org/support/topic/feed-issue-5" hreflang="en" rel="nofollow">reportado por Dinata and talgalili</a> (em inglês)</li> </ul> <h4>1.6.3</h4> <ul> <li>correção para hacks do IE contendo javascript, o que causa quebra do javascript (como visto no tema Sampression) como reportado por <a href="http://www.hiskip.com/wp/" hreflang="jp" rel="nofollow">Takehiro de hiskip.com</a> (em japonês)</li> <li>correção para problema de escape no CSS importado, causando quebra de CSS (como visto no tema Sampressio) como reportado por Takahiro também</li> <li>correção na análise de importações com a sintaxe @import ‘custom.css’ não sendo analisada (como visto no tema Arras), novamente como reportado por Takahiro</li> <li>correção para media types complexos no atributo media <a href="https://wordpress.org/support/topic/autoptimize-and-media-queries" hreflang="en" rel="nofollow">como reportado por jvwisssen</a></li> <li>correção para o desaparecimento de imagens de fundo que já eram data-uri’s <a href="https://wordpress.org/support/topic/data-uris" hreflang="en" rel="nofollow">como reportado por will.blaschko</a></li> <li>correção para não remover comentários no HTML necessários para o WP Super Cache ou W3 Total Cache (e.g. mfunc)</li> <li>adicionada a verificação para limpar o cache ao atualizar</li> <li>FAQ atualizada no arquivo readme com informação sobre solução de problemas e suporte</li> <li>testado com WordPress 3.6 beta</li> </ul> <h4>1.6.2</h4> <ul> <li>Outra correção de emergência, eu temo: apache_request_header (de novo em config/delayed.php) está disponível apenas em… Apache (duh), quebrando sistemas não-Apache como NGNIX, Lighttpd e MS IIS. Reportado por vários usuários, obrigado a todos!</li> </ul> <h4>1.6.1</h4> <ul> <li>Corrigido o erro estúpido de grafia em config/delayed.php que quebrava bastante coisas; strpos instead of str_pos como reportado por Takahiro.</li> </ul> <h4>1.6.0</h4> <ul> <li>Agora você pode especificar quais scripts não devem ser Autoptimizados na página de administração. Apenas adicione os nomes (ou parte do caminho) dos scripts numa lista separada por vírgula e o arquivo JavaScript não será tocado pelo Autoptimize.</li> <li>Adicionado suporte para ETag e LastModified (essencialmente para melhorar a nota pagespeed, já que os arquivos são “cacheáveis” explicitamente por 1 ano)</li> <li>Autoptimização para usuários logados está ativada novamente</li> <li>Agora o Autoptimize cria um index.html em wp-content/cache/autoptimize para evitar que espiem (como <a href="http://blog.futtta.be/2013/01/07/adopting-an-oss-orphan-autoptimize/#li-comment-36292" hreflang="en" rel="nofollow">proposto por Chris</a>)</li> <li>correção: todas as funções obsoletas removidas (<a href="https://wordpress.org/support/topic/many-deprecated-errors" hreflang="en" rel="nofollow">reportado por Hypolythe</a> e um diff do Heiko Adams, obrigado caras!)</li> <li>correção para problema de HTTPS como <a href="https://wordpress.org/support/topic/woocommerce-autoptimizer-https-issue" hreflang="en" rel="nofollow">reportado por dbs121</a> (em inglês)</li> <li>.correção para quebra de diretório incomum do WordPress como reportado por por <a href="http://www.blog-it-solutions.de/" hreflang="de" rel="nofollow">Josef d blog-it-solutions.de</a>.</li> </ul> <h4>1.5.1</h4> <ul> <li>correção: adiciona o CSS antes da tag “title” de abertura e não depois tag para fechar, evitando que o CSS seja carregado na ordem errada, como reportado por <a href="http://fotoandfashion.de/" hreflang="de" rel="nofollow">fotofashion</a> e <a href="http://www.blog-it-solutions.de" hreflang="de" rel="nofollow">blogitsolutions</a> (obrigado, pessoal)</li> </ul> <h4>1.5</h4> <ul> <li>primeiro versão de correção lançada por <a href="http://blog.futtta.be/2013/01/07/adopting-an-oss-orphan-autoptimize/" hreflang="en" rel="nofollow">furta</a>, obrigado por um grande plugin Turl!</li> <li>diversas correções de defeitos, suporte ao tema Twenty Twelve, problema na barra de admin no WP 3.5, data-uris quebrando nome de arquivo CSS</li> </ul> <h4>1.4</h4> <ul> <li>Adicionado o suporte para tags style em linha com CSS media</li> <li>Correção para a barra superior do WordPress</li> </ul> <h4>1.3</h4> <ul> <li>Adicionada solução alternativa para TinyMCEComments</li> <li>Adicionado jeitinho para Google Analytics assíncrono</li> </ul> <h4>1.2</h4> <ul> <li>Adicionado jeitinho para anúncios Chitika</li> <li>Adicionado jeitinho para o widget LinkWithin.</li> <li>Tradução para Bielorusso</li> </ul> <h4>1.1</h4> <ul> <li>Adicionado jeitinho para Amazon e Fastclick</li> <li>Adicionado uma solução para Comment Form Quicktags</li> <li>Corrige problema com Vipers Video Quicktags</li> <li>Solução para um defeito no qual alguns scripts que não deveriam ser movidos são movidos</li> <li>Corrige um defeito onde a página de configuração não aparece</li> <li>Corrige manejo de @import</li> <li>Implementa uma opção para desabilitar o gzip de JS/CSS</li> <li>Implementa a funcionalidade CDN</li> <li>Implementado geração de data-uri para imagens</li> <li>Suporte ao YUI CSS/JS Compressor</li> <li>Aumento de performance</li> <li>Gerencia melhor os arquivos do WP Super Cache</li> <li>Traduções atualizadas</li> </ul> <h4>1.0</h4> <ul> <li>Adiciona solução para whos.among.us</li> <li>Suporte à preservação de comentários HTML.</li> <li>“Compressão de cache atrasada” implementada</li> <li>Tradução para Francês</li> <li>Tradução para Espanhol atualizada</li> </ul> <h4>0.9</h4> <ul> <li>Solução para blogs em rede adicionada.</li> <li>Solução para histats e statscounter adicionada.</li> <li>Solução para smowtion e infolinks adicionada.</li> <li>Solução para “Featured Content Gallery” adicionada</li> <li>Tradução para Chinês adicionada</li> <li>Tradução para Espanhol atualizada</li> <li>Sistema de cache modificado para usar wp-content/cache/</li> <li>Botão limpar cache adicionado</li> </ul> <h4>0.8</h4> <ul> <li>Solução para Vipers Video Quicktags adicionada</li> <li>Suporte à tags sem “media”.</li> <li>Ainda mais precauções para evitar que URLs no CSS sejam quebradas</li> <li>Suporte à encapsulamente “try-catch” no código JavaScript</li> <li>Adicionada solução para Estatísticas WordPress.com (Jetpack)</li> <li>Corrige uma falha na qual as tags não eram movidas</li> <li>Atualizado o modelo de tradução</li> <li>Tradução para Espanhol atualizada</li> </ul> <h4>0.7</h4> <ul> <li>Adicionada correção para DISQUS Comment System.</li> </ul> <h4>0.6</h4> <ul> <li>Adicionada solução para mubloglog, blogcatalog, tweetmeme and Google CSE</li> </ul> <h4>0.5</h4> <ul> <li>Suporte à localização</li> <li>Corrige o sistema move/não-move (novamente)</li> <li>Melhora a detecção de URL no CSS</li> <li>Suporte a procurar por scripts e estilo apenas em “header”</li> <li>Corrige uma ocorrência com data-uris sendo modificadas</li> <li>Tradução para Espanhol</li> </ul> <h4>0.4</h4> <ul> <li>Descrição do plugin em Inglês</li> <li>Ajusta a configuração padrão para tudo desligado</li> <li>Adiciona link de páginas do plugin à página de opções</li> <li>Corrige problema com scripts que não deveriam ser movidos mas eram movidos assim mesmo</li> </ul> <h4>0.3</h4> <ul> <li>Desabilita media CSS em @import pois causava um loop infinito</li> </ul> <h4>0.2</h4> <ul> <li>Suporte à media CSS</li> <li>Corrige um problema com o mecanismo de preservação de Hacks IE</li> <li>Corrige um problema com algumas URLs quebrando no CSS</li> </ul> <h4>0.1</h4> <ul> <li>Primeira versão lançada.</li> </ul></div> </div><!-- .entry-content --> <div class="entry-meta"> <div class="widget plugin-meta"> <h3 class="screen-reader-text">Meta</h3> <ul> <li> Versão: <strong>2.3.4</strong> </li> <li> Última atualização: <strong><span>3 meses</span> atrás</strong> </li> <li> Instalações ativas: <strong>600.000+</strong> </li> <li> Requer a versão do WordPress: <strong>4.0</strong> </li> <li> Testado até o WordPress: <strong>4.9.6</strong> </li> <li> Idiomas:<div class="languages"> <button type="button" class="button-link popover-trigger" aria-expanded="false" data-target="popover-languages"> Veja todos os 22 </button> <div id="popover-languages" class="popover is-top-right"> <div class="popover-arrow"></div> <button type="button" class="button-link popover-close" aria-label="Fechar esta janela"> Fechar </button> <div class="popover-inner"> <p><a href="https://bg.wordpress.org/plugins/autoptimize/">Bulgarian</a>, <a href="https://cn.wordpress.org/plugins/autoptimize/">Chinese (China)</a>, <a href="https://nl.wordpress.org/plugins/autoptimize/">Dutch</a>, <a href="https://en-au.wordpress.org/plugins/autoptimize/">English (Australia)</a>, <a href="https://en-ca.wordpress.org/plugins/autoptimize/">English (Canada)</a>, <a href="https://en-nz.wordpress.org/plugins/autoptimize/">English (New Zealand)</a>, <a href="https://en-gb.wordpress.org/plugins/autoptimize/">English (UK)</a>, <a href="https://wordpress.org/plugins/autoptimize/">English (US)</a>, <a href="https://fi.wordpress.org/plugins/autoptimize/">Finnish</a>, <a href="https://fr.wordpress.org/plugins/autoptimize/">French (France)</a>, <a href="https://de.wordpress.org/plugins/autoptimize/">German</a>, <a href="https://it.wordpress.org/plugins/autoptimize/">Italian</a>, <a href="https://ja.wordpress.org/plugins/autoptimize/">Japanese</a>, <a href="https://fa.wordpress.org/plugins/autoptimize/">Persian</a>, <a href="https://pl.wordpress.org/plugins/autoptimize/">Polish</a>, <a href="https://br.wordpress.org/plugins/autoptimize/">Portuguese (Brazil)</a>, <a href="https://pt.wordpress.org/plugins/autoptimize/">Portuguese (Portugal)</a>, <a href="https://sr.wordpress.org/plugins/autoptimize/">Serbian</a>, <a href="https://sk.wordpress.org/plugins/autoptimize/">Slovak</a>, <a href="https://es.wordpress.org/plugins/autoptimize/">Spanish (Spain)</a>, <a href="https://sv.wordpress.org/plugins/autoptimize/">Swedish</a>, and <a href="https://tr.wordpress.org/plugins/autoptimize/">Turkish</a>.</p> <p> <a href="https://translate.wordpress.org/projects/wp-plugins/autoptimize">Traduza para o seu idioma</a> </p> </div> </div> </div> </li> <li class="clear"> Tags: <div class="tags"><a href="https://br.wordpress.org/plugins/tags/async/" rel="tag">async</a><a href="https://br.wordpress.org/plugins/tags/minify/" rel="tag">minify</a><a href="https://br.wordpress.org/plugins/tags/optimize/" rel="tag">Optimize</a><a href="https://br.wordpress.org/plugins/tags/pagespeed/" rel="tag">pagespeed</a><a href="https://br.wordpress.org/plugins/tags/performance/" rel="tag">performance</a></div> </li> <li class="hide-if-no-js"> <strong><a class="plugin-admin" href="https://br.wordpress.org/plugins/autoptimize/advanced/">Panorama avançado</a></strong> </li> </ul> </div><div class="widget plugin-ratings"><h3 class="widget-title">Classificações</h3> <a class="reviews-link" href="https://wordpress.org/support/plugin/autoptimize/reviews/">Ver todos</a> <div class="rating"> <div class="wporg-ratings" aria-label="4.5 de 5 estrelas" data-title-template="%s de 5 estrelas" data-rating="4.5" style="color:#ffb900;"><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-filled"></span><span class="dashicons dashicons-star-half"></span></div> </div> <ul class="ratings-list"> <li class="counter-container"> <a href="https://wordpress.org/support/plugin/autoptimize/reviews/?filter=5"> <span class="counter-label">5 estrelas</span> <span class="counter-back"> <span class="counter-bar" style="width: 85.46875%;"></span> </span> <span class="counter-count">547</span> </a> </li> <li class="counter-container"> <a href="https://wordpress.org/support/plugin/autoptimize/reviews/?filter=4"> <span class="counter-label">4 estrelas</span> <span class="counter-back"> <span class="counter-bar" style="width: 4.84375%;"></span> </span> <span class="counter-count">31</span> </a> </li> <li class="counter-container"> <a href="https://wordpress.org/support/plugin/autoptimize/reviews/?filter=3"> <span class="counter-label">3 estrelas</span> <span class="counter-back"> <span class="counter-bar" style="width: 2.34375%;"></span> </span> <span class="counter-count">15</span> </a> </li> <li class="counter-container"> <a href="https://wordpress.org/support/plugin/autoptimize/reviews/?filter=2"> <span class="counter-label">2 estrelas</span> <span class="counter-back"> <span class="counter-bar" style="width: 1.5625%;"></span> </span> <span class="counter-count">10</span> </a> </li> <li class="counter-container"> <a href="https://wordpress.org/support/plugin/autoptimize/reviews/?filter=1"> <span class="counter-label">1 estrela</span> <span class="counter-back"> <span class="counter-bar" style="width: 5.78125%;"></span> </span> <span class="counter-count">37</span> </a> </li> </ul> </div><div id="plugin-contributors" class="widget plugin-contributors"><h4 class="widget-title">Contribuidores</h4> <ul id="contributors-list" class="contributors-list"> <li> <img alt='' src='https://secure.gravatar.com/avatar/ed18711cb635df5ef512bf75b1a50f89?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/ed18711cb635df5ef512bf75b1a50f89?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' /> <a href="https://profiles.wordpress.org/futtta"> Frank Goossens </a> </li> <li> <img alt='' src='https://secure.gravatar.com/avatar/9638840deee19659d10b487fdcfbcb20?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/9638840deee19659d10b487fdcfbcb20?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' /> <a href="https://profiles.wordpress.org/optimizingmatters"> Optimizing Matters </a> </li> <li> <img alt='' src='https://secure.gravatar.com/avatar/b5b3a1d2a78ad9aec116088306975377?s=32&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b5b3a1d2a78ad9aec116088306975377?s=64&d=mm&r=g 2x' class='avatar avatar-32 photo' height='32' width='32' /> <a href="https://profiles.wordpress.org/turl"> turl </a> </li> </ul> </div><div class="widget plugin-support"><h3 class="widget-title">Suporte</h3> <p class="aside">Problemas resolvidos nos dois últimos meses:</p> <p class="counter-container"> <span class="counter-back"> <span class="counter-bar" style="width: 82.051282051282%;"></span> </span> <span class="counter-count"> 96 de 117 </span> </p> <p> <a class="button" href="https://wordpress.org/support/plugin/autoptimize">Ver fórum de suporte</a> </p> </div><div class="widget plugin-donate"><h3 class="widget-title">Doar</h3> <p class="aside">Gostaria de apoiar o desenvolvimento deste plugin?</p> <p> <a class="button button-secondary" href="http://blog.futtta.be/2013/10/21/do-not-donate-to-me/" rel="nofollow"> Faça uma doação a este plugin </a> </p> </div> </div><!-- .entry-meta --> </article><!-- #post-## --> </main><!-- #main --> </div><!-- #content --> <div id="wporg-footer"> <div class="wrapper"> <ul> <li><a href="//br.wordpress.org/about/" title="Uma introdução ao projeto WordPress">Sobre</a></li> <li><a href="//br.wordpress.org/news/" title="Novidades e atualizações">Blog</a></li> <li><a href="//wordpress.org/hosting/" title="Serviços de hospedagens recomendados">Hospedagem</a></li> <li><a href="https://wordpressfoundation.org/donate/" title="Doe para a Fundação WordPress">Doe</a></li> </ul> <ul> <li><a href="//br.wordpress.org/support/" title="Fóruns, documentação e outros recursos">Suporte</a></li> <li><a href="//developer.wordpress.org" title="Recursos para desenvolvedores WordPress">Desenvolvedores</a></li> <li><a href="//make.wordpress.org/" title="Contribua para o WordPress com código, suporte, traduções e mais">Participe</a></li> <li><a href="//learn.wordpress.org/" title="Oficinas e materiais de treinamento">Aprenda</a></li> </ul> <ul> <li><a href="//wordpress.org/showcase/" title="Alguns dos melhores sites em WordPress na internet">Showcase</a></li> <li><a href="//br.wordpress.org/plugins/" title="Adicione funcionalidades ao WordPress">Plugins</a></li> <li><a href="//br.wordpress.org/themes/" title="Faça seu WordPress ficar lindo">Temas</a></li> <li><a href="//wordpress.org/ideas/" title="Compartilhe suas ideias para melhorar o WordPress">Ideias</a></li> </ul> <ul> <li><a href="//central.wordcamp.org/" title="Encontre um evento WordPress perto de você">WordCamp</a></li> <li><a href="//wordpress.tv/" title="Vídeos, tutoriais e sessões de WordCamps">WordPress.TV</a></li> <li><a href="//buddypress.org/" title="Um conjunto de plugins para transformar o seu WordPress em uma rede social">BuddyPress</a></li> <li><a href="//bbpress.org/" title="Fóruns rápidos e funcionais construídos com WordPress">bbPress</a></li> </ul> <ul> <li><a href="//wordpress.com/?ref=wporg-footer" title="Hospedagem WordPress sem problemas">WordPress.com</a></li> <li><a href="//ma.tt/" title="Cofundador do WordPress, um exemplo do que o WordPress pode fazer">Matt</a></li> <li><a href="//br.wordpress.org/about/privacy/" title="Política de privacidade do WordPress.org">Privacidade</a></li> <li><a href="https://publiccode.eu/" target="_blank">Public Code</a></li> </ul> <ul> <li> <iframe title="Siga @WordPress no Twitter" allowtransparency="true" frameborder="0" scrolling="no" src="//platform.twitter.com/widgets/follow_button.html?screen_name=WordPress&show_count=false" style="width:135px; height:20px;"></iframe> </li> <li> <iframe title="Curta WordPress no Facebook" src="//www.facebook.com/plugins/like.php?app_id=121415197926116&href=http%3A%2F%2Fwww.facebook.com%2Fwordpress&send=false&layout=button_count&width=135&show_faces=false&action=like&colorscheme=light&font=lucida+grande&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:135px; height:21px;" allowTransparency="true"></iframe> </li> <li> <script src="https://apis.google.com/js/platform.js" async defer></script> <div class="g-plusone" data-size="medium" data-href="https://plus.google.com/+WordPress"></div> </li> </ul> </div> <p class="cip">Código é Poesia.</p> </div> <script type="text/javascript"> var _qevents = _qevents || []; (function() { var elem = document.createElement('script'); elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js"; elem.async = true; elem.type = "text/javascript"; var scpt = document.getElementsByTagName('script')[0]; scpt.parentNode.insertBefore(elem, scpt); })(); </script> <script type="text/javascript"> /** * Handles toggling the navigation menu for small screens and enables TAB key * navigation support for dropdown menus. */ ( function( $ ) { var container, button, menu, links, i, len; container = document.getElementById( 'wporg-header' ); if ( ! container ) { return; } button = container.getElementsByTagName( 'button' )[0]; if ( 'undefined' === typeof button ) { return; } menu = container.getElementsByTagName( 'ul' )[0]; // Hide menu toggle button if menu is empty and return early. if ( 'undefined' === typeof menu ) { button.style.display = 'none'; return; } menu.setAttribute( 'aria-expanded', 'false' ); if ( -1 === menu.className.indexOf( 'nav-menu' ) ) { menu.className += ' nav-menu'; } button.onclick = function() { if ( -1 !== menu.className.indexOf( 'toggled' ) ) { menu.className = menu.className.replace( ' toggled', '' ); button.setAttribute( 'aria-expanded', 'false' ); menu.setAttribute( 'aria-expanded', 'false' ); } else { menu.className += ' toggled'; button.setAttribute( 'aria-expanded', 'true' ); menu.setAttribute( 'aria-expanded', 'true' ); } }; // Get all the link elements within the menu. links = menu.getElementsByTagName( 'a' ); // Each time a menu link is focused or blurred, toggle focus. for ( i = 0, len = links.length; i < len; i++ ) { links[i].addEventListener( 'focus', toggleFocus, true ); links[i].addEventListener( 'blur', toggleFocus, true ); } /** * Sets or removes .focus class on an element. */ function toggleFocus() { var self = this; // Move up through the ancestors of the current link until we hit .nav-menu. while ( -1 === self.className.indexOf( 'nav-menu' ) ) { // On li elements toggle the class .focus. if ( 'li' === self.tagName.toLowerCase() ) { if ( -1 !== self.className.indexOf( 'focus' ) ) { self.className = self.className.replace( ' focus', '' ); } else { self.className += ' focus'; } } self = self.parentElement; } } /** * Toggles `focus` class to allow submenu access on tablets. */ ( function( container ) { var touchStartFn, i, parentLink = container.querySelectorAll( '.menu-item-has-children > a, .page_item_has_children > a' ); if ( 'ontouchstart' in window ) { touchStartFn = function( e ) { var menuItem = this.parentNode, i; if ( ! menuItem.classList.contains( 'focus' ) ) { e.preventDefault(); for ( i = 0; i < menuItem.parentNode.children.length; ++i ) { if ( menuItem === menuItem.parentNode.children[i] ) { continue; } menuItem.parentNode.children[i].classList.remove( 'focus' ); } menuItem.classList.add( 'focus' ); } else { menuItem.classList.remove( 'focus' ); } }; for ( i = 0; i < parentLink.length; ++i ) { parentLink[i].addEventListener( 'touchstart', touchStartFn, false ); } } }( container ) ); } )(); </script> <script type="text/javascript">_qevents.push( { qacct:"p-18-mFEk4J448M"} );</script> <noscript><img src="//pixel.quantserve.com/pixel/p-18-mFEk4J448M.gif" style="display: none;" border="0" height="1" width="1" alt=""/></noscript> <!-- 21 queries. 0,283 seconds --> <script type="text/javascript" src="//gravatar.com/js/gprofiles.js"></script> <script type="text/javascript"> (function($){ $(document).ready(function() { $('#footer a, #wporg-footer a').click(function() { if (this.href.indexOf('wordpress.org') == -1 && this.href.indexOf('http') == 0) { recordOutboundLink(this, 'Outbound Links', this.href); return false; } }); }); })(jQuery); </script> <script type='text/javascript' src='https://br.wordpress.org/plugins/wp-includes/js/admin-bar.min.js?ver=5.0-alpha-43320'></script> <script type='text/javascript' src='https://s.w.org/wp-content/themes/pub/wporg-plugins/js/navigation.js?ver=20151215'></script> <script type='text/javascript' src='https://s.w.org/wp-content/themes/pub/wporg-plugins/js/skip-link-focus-fix.js?ver=20151215'></script> <script type='text/javascript' src='https://s.w.org/wp-content/themes/pub/wporg-plugins/js/popover.js?ver=20171002'></script> <script type='text/javascript' src='https://s.w.org/wp-content/themes/pub/wporg-plugins/js/section-faq.js?ver=20180131'></script> <script type='text/javascript'> /* <![CDATA[ */ var wporgLocaleBanner = {"apiURL":"https:\/\/br.wordpress.org\/plugins\/wp-json\/plugins\/v1\/locale-banner","currentPlugin":"autoptimize"}; /* ]]> */ </script> <script type='text/javascript' src='https://s.w.org/wp-content/themes/pub/wporg-plugins/js/locale-banner.js?ver=20171116'></script> <script type='text/javascript'> /* <![CDATA[ */ var pluginDirectory = {"endpoint":"https:\/\/br.wordpress.org\/plugins\/wp-json","nonce":"0d3a709b39","base":"\/plugins\/","userId":"0"}; var localeData = {"":{"Plural-Forms":"nplurals=2; plural=n != 1;","Language":"pt_BR","localeSlug":"pt"},"screenshots":"Capturas de tela"}; /* ]]> */ </script> <script type='text/javascript' src='https://s.w.org/wp-content/themes/pub/wporg-plugins/js/theme.js?ver=20180110'></script> <script type='text/javascript' src='https://s.w.org/wp-includes/js/wp-embed.min.js?ver=5.0-alpha-43320'></script> <div id="wpadminbar" class="nojq nojs"> <a class="screen-reader-shortcut" href="#wp-toolbar" tabindex="1">Pular para a barra de ferramentas</a> <div class="quicklinks" id="wp-toolbar" role="navigation" aria-label="Barra de ferramentas" tabindex="0"> <ul id='wp-admin-bar-root-default' class="ab-top-menu"><li id='wp-admin-bar-wp-logo' class="menupop"><a class='ab-item' aria-haspopup="true" href='https://global.wordpress.org/wp-admin/user/about.php'><span class="ab-icon"></span><span class="screen-reader-text">Sobre o WordPress</span></a><div class="ab-sub-wrapper"><ul id='wp-admin-bar-wp-logo-default' class="ab-submenu"><li id='wp-admin-bar-about'><a class='ab-item' href='https://global.wordpress.org/wp-admin/user/about.php'>Sobre o WordPress</a></li></ul><ul id='wp-admin-bar-wp-logo-external' class="ab-sub-secondary ab-submenu"><li id='wp-admin-bar-wporg'><a class='ab-item' href='https://br.wordpress.org/'>WordPress.org</a></li><li id='wp-admin-bar-documentation'><a class='ab-item' href='https://codex.wordpress.org/pt-br:Página_Inicial'>Documentação</a></li><li id='wp-admin-bar-support-forums'><a class='ab-item' href='https://br.wordpress.org/support/'>Fóruns de suporte</a></li><li id='wp-admin-bar-feedback'><a class='ab-item' href='https://wordpress.org/support/forum/requests-and-feedback'>Feedback</a></li></ul></div></li></ul><ul id='wp-admin-bar-top-secondary' class="ab-top-secondary ab-top-menu"><li id='wp-admin-bar-search' class="admin-bar-search"><div class="ab-item ab-empty-item" tabindex="-1"><form action="https://br.wordpress.org/plugins/" method="get" id="adminbarsearch"><input class="adminbar-input" name="s" id="adminbar-search" type="text" value="" maxlength="150" /><label for="adminbar-search" class="screen-reader-text">Pesquisar</label><input type="submit" class="adminbar-button" value="Pesquisar"/></form></div></li><li id='wp-admin-bar-log-in'><a class='ab-item' href='https://login.wordpress.org/?redirect_to=https%3A%2F%2Fbr.wordpress.org%2Fplugins%2Fautoptimize%2F&locale=pt_BR'>Acessar</a></li><li id='wp-admin-bar-register'><a class='ab-item' href='https://login.wordpress.org/register?locale=pt_BR'>Cadastre-se</a></li></ul> </div> </div> </body> </html>