Wordpress

theme.json: fonte personalizada no tema de blocos do WordPress 6.9

Você copiou o inter-variable.woff2 pra assets/fonts/, escreveu o @font-face no style.css e o seletor de tipografia do editor continua mostrando as três fontes de sempre. Num tema de blocos o editor não lê o seu CSS, ele lê o theme.json: enquanto a família não estiver declarada lá, ela não existe pros Estilos Globais.

O bloco que faltava

{
  "$schema": "https://schemas.wp.org/trunk/theme.json",
  "version": 3,
  "settings": {
    "typography": {
      "fontFamilies": [
        {
          "name": "Inter",
          "slug": "inter",
          "fontFamily": "Inter, system-ui, sans-serif",
          "fontFace": [
            {
              "fontFamily": "Inter",
              "fontWeight": "400 700",
              "fontStyle": "normal",
              "fontDisplay": "swap",
              "src": [ "file:./assets/fonts/inter-variable.woff2" ]
            }
          ]
        }
      ]
    }
  }
}

O version 3 é o esquema atual do WordPress 6.9. É o array fontFace que faz o núcleo imprimir a regra @font-face no front e no editor. Sem ele o nome aparece no seletor, mas o navegador cai no fallback e ninguém entende por quê.

O prefixo file:./ passa pelo get_theme_file_uri(): procura na pasta do tema filho e, se não achar, cai pra do pai. Dá pra deixar o .woff2 só no pai; errou o caminho nos dois, sai a URL do pai assim mesmo e o navegador toma 404.

Usando o slug no CSS

body {
    font-family: var(--wp--preset--font-family--inter);
}

O nome da variável sai direto do slug. Trocou o slug, quebrou o CSS de quem já usava a variável antiga — escolha um slug curto e não mexa depois.

Editou o theme.json e nada mudou? Antes de culpar o cache, olhe os Estilos Globais: fonte escolhida pelo editor de site fica salva no post type wp_global_styles e ganha do arquivo — redefinir para os padrões, no painel Estilos, limpa isso.

O cache do theme.json fica num grupo não persistente, então wp cache flush não muda nada aqui; enquanto você ajusta, ponha define('WP_DEVELOPMENT_MODE', 'theme'); no wp-config.php e o núcleo ignora esse cache. E confira no DevTools se o .woff2 volta 200: um location ~* .(woff2)$ mal escrito no nginx derruba a fonte com 404 e o sintoma parece o mesmo.

Post Recentes

setup:upgrade travado no Magento 2.4.8: destravar o lock e concluir

O setup:upgrade parou no meio de um módulo e a loja ficou em manutenção. Veja como liberar o processo, limpar…

2 dias atrás

CodeIgniter 4: Controller or its method is not found — arrumando a rota

A rota abre no Windows e devolve 404 no servidor Linux. Veja os três culpados: nome de arquivo com caixa…

3 dias atrás

Exportar dados pessoais no WordPress: atender o pedido LGPD do titular

Recebeu um pedido de acesso aos dados pessoais e o prazo está correndo? Use Ferramentas > Exportar dados pessoais e…

3 dias atrás

Desativar o 2FA do Magento 2 no ambiente local sem quebrar o admin

Cópia local do Magento pedindo código do autenticador e o e-mail de setup não chega. Desligue os dois módulos de…

4 dias atrás

Erro 429 na API de IA: backoff exponencial em PHP com retry e usleep

Seu script em lote morre no meio com HTTP 429 Too Many Requests? Leia o header Retry-After e troque o…

5 dias atrás

WooCommerce sem métodos de entrega no checkout: como achar a área errada

O checkout avisa que não existem métodos de entrega disponíveis. Veja a ordem de checagem nas áreas de entrega e…

5 dias atrás