WP Manifestindependent plugin directory
manifest / performance / mrr-navegacao

MRR Instant Navigation self-updates

Navegação instantânea para sites Bricks Builder: troca de página sem recarregar, pré-carga, skeleton e scripts do Bricks/WooCommerce funcionando (WordPress plugin)

by Marreira Digital · github.com/marreiradigital/mrr-navegacao · 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/marreiradigital/mrr-navegacao/archive/refs/heads/main.zip

Ships its own WordPress updater (Plugin Update Checker), so new versions show up under Dashboard → Updates.

MRR Navegação (MRR Instant Navigation)

Plugin de WordPress para sites no Bricks Builder. Com ele, o clique num link interno troca só o conteúdo da página, sem recarregar, e os scripts do Bricks, do WooCommerce e das próprias páginas continuam funcionando como numa carga normal. Ele também pré-carrega as páginas, mostra skeleton enquanto o conteúdo chega e volta para a carga normal sempre que algo sai do previsto.

English: instant navigation for Bricks Builder sites. Internal links swap only the content while Bricks, WooCommerce and page scripts keep working. Includes prefetching, skeletons, View Transitions, Google Analytics page views, a test mode and updates from GitHub releases. The plugin is fully translatable (English and Brazilian Portuguese included); see readme.txt.

Instalação

  1. Baixe o mrr-navegacao.zip da última versão. Use o zip da release, não o "Source code": ele já vem com as dependências.
  2. No site, vá em Plugins → Adicionar novo → Enviar plugin e ative.
  3. Abra Configurações → Navegação instantânea, comece em "Só para quem administra o site (teste)", navegue pelo site e depois passe para "Ligada para todos".

As versões novas aparecem em Plugins → Atualizações, como qualquer plugin.

Requisitos: tema Bricks 1.9 ou mais novo, WordPress 6.8 e PHP 8.1.

Como funciona

Peça Papel
assets/nucleo.js impresso inline no topo do <head>, antes de qualquer script. Anota o que cada script liga na página: ouvintes em window, document, html e body, timers, requestAnimationFrame, observers e eventos jQuery. Na troca, tudo o que a página anterior ligou é desligado. Também guarda o DOMContentLoaded, o load e o jQuery(fn) das bibliotecas, para repetir em cada página nova
assets/navegacao.js o motor: intercepta o clique, pré-carrega, troca o <body> e o que muda no <head>, roda os scripts da página nova, repete a inicialização das bibliotecas e cuida dos skeletons
assets/navegacao.css barra de carregamento, transição e skeleton (também vai inline no <head>)
inc/config.php opções, onde a navegação vale (mrrnav_ativo_aqui()), conflitos conhecidos e o registro de ocorrências (REST mrr-navegacao/v1/falha, só para administradores)
inc/front.php imprime o núcleo e carrega o motor, marcando os dois para os otimizadores não mexerem
inc/admin.php Configurações → Navegação instantânea e os avisos no painel

Onde a navegação vale: o servidor decide, e só a página que leva o núcleo participa. Estas sempre abrem com carga completa:

  • carrinho, finalizar compra e minha conta;
  • o painel e o editor do Bricks;
  • a lista de exclusão das configurações.

Link com parâmetro que muda algo no servidor (add-to-cart, comprar, download_file, action, _wpnonce…) nunca é pré-carregado.

Para scripts próprios

document.addEventListener('mrr:pagina', function (e) {
  // página nova pronta: e.detail.url, e.detail.titulo
  // o que for ligado aqui em window/document é desligado sozinho na troca seguinte
});
  • mrr:saindo: disparado antes da troca.
  • data-mrr-nav="off" ou a classe mrr-sem-nav: num link, ou num bloco em volta dele, faz o link abrir com carga completa.
  • data-mrr-nav="manter": num elemento com id, mantém o mesmo elemento entre as páginas.
  • MRRNavegacao.ir(url): navega pelo código.

Filtros de PHP:

  • mrrnav_ativo: desliga a navegação numa requisição.
  • mrrnav_pre_carga_maximo: limite de páginas pré-carregadas por página (padrão 40).
  • mrrnav_conflitos: acrescenta ou tira avisos de conflito.

Desenvolvimento

php composer.phar install --no-dev   # baixa o Plugin Update Checker para vendor/
php composer.phar audit --no-dev     # zero vulnerabilidade é requisito
python tools/i18n.py                 # atualiza o .pot, o .po e compila .mo e .l10n.php
python tools/i18n.py --checar        # falha se faltar tradução ou se os compilados estiverem velhos

Traduções:

  • Os textos do PHP estão em inglês, como pede o WordPress.
  • O pt-BR fica em languages/mrr-navegacao-pt_BR.po: edite o msgstr e rode o tools/i18n.py.
  • O WordPress 6.5+ lê o .l10n.php, que é mais rápido que o .mo.

Publicar uma versão

  1. Suba o número em mrr-navegacao.php (cabeçalho Version e MRRNAV_VERSAO) e em readme.txt (Stable tag e changelog).
  2. Faça o commit e marque a versão: git tag v1.2.0 && git push origin main --tags.
  3. A Action release.yml cuida do resto:
    • confere se a tag bate com o cabeçalho;
    • roda o lint e o tools/i18n.py --checar;
    • instala as dependências e monta o mrr-navegacao.zip (sem o que está em .distignore);
    • publica a release no GitHub.
  4. Os sites com o plugin veem a atualização em até 12 horas. Para ver na hora, use "Verificar atualizações" em Plugins.

Licença

GPL-2.0 ou posterior. O Plugin Update Checker (MIT) vem em vendor/ no zip da release.