O WordPress suporta totalmente JavaScript, bem como a biblioteca jQuery. Entretanto, a forma como o WordPress implementa o jQuery pode levar a erros ao tentar executar funções. Um dos problemas mais comuns é o erro “Uncaught TypeError: $ Is Not a Function”.

A solução desse erro é relativamente simples se você entender o que o causa. O alias “$” é o núcleo do problema e o jQuery e o WordPress oferecem várias maneiras de contorná-lo para que você possa executar as funções necessárias.

Neste artigo, explicaremos o que é o erro “Uncaught TypeError: $ is not a function” e o que o causa. Em seguida, mostraremos como solucioná-lo. Vamos começar!

O que é “Uncaught TypeError: $ Is Not a Function” no WordPress?

O erro “Uncaught TypeError: $ is not a function” é um erro comum de JavaScript que ocorre quando a biblioteca jQuery não é carregada corretamente ou há um conflito com outros scripts usando o símbolo ‘$’.

No WordPress, este erro tem mais a ver com a forma como o Content Management System (CMS) implementa o jQuery e menos com problemas de carregamento.

jQuery é uma popular biblioteca JavaScript. É amplamente utilizada em temas WordPress e plugins para lidar com vários elementos dinâmicos, animações e operações AJAX:

The jQuery library homepage
Biblioteca jQuery

No jQuery, o símbolo “$” é um alias para o objeto jQuery, que é o principal objeto com o qual você interage ao trabalhar com a biblioteca. Isso torna o código mais curto, mais legível e muito mais fácil de escrever.

O erro “Uncaught TypeError: $ is not a function” é um pouco difícil de solucionar, porque você não verá uma mensagem clara de erro. Ao contrário de outros erros do WordPress, esse problema pode ser desencadeado por elementos mal configurados em seu site ou até mesmo por uma página de erro 404:

Screenshot of a 404 “page not found” error
Erro 404 “page not found”

A maneira mais eficaz de diagnosticar o problema é dando uma olhada no console do desenvolvedor ou usando os registros de depuração do WordPress.

Quais são as principais causas do erro “Uncaught TypeError: $ is not a function”?

O erro “Uncaught TypeError: $ is not a function” tem tudo a ver com jQuery. Você encontrará este problema quando uma função que inclui o símbolo “$” for executada enquanto o site estiver sendo carregado.

Aqui estão algumas causas potenciais por trás do erro:

  1. A biblioteca jQuery não está devidamente carregada. Se a biblioteca jQuery não estiver devidamente carregada ou consultada, o símbolo ‘$’ não será reconhecido como uma função válida e ela irá lançar um erro. Isso normalmente não é um problema no WordPress porque o Content Management System (CMS) carrega a biblioteca de forma nativa.
  2. Você está usando jQuery em modo noConflict. Por padrão, o WordPress roda jQuery no modo noConflict. Isso significa que ele não reconhece o símbolo “$” como um nome de função. Para usá-lo, você precisará colocar uma alternativa em ação.
  3. Conflitos de plugins ou temas. Alguns plugins ou temas podem ter JavaScript codificado inadequadamente que interfere no funcionamento adequado do jQuery, ou usa o símbolo “$” de uma forma que causa problemas com outros scripts.

Para resumir, o WordPress não está configurado para reconhecer o símbolo “$”. Entretanto, isso não significa que você não pode executar o código jQuery dentro do CMS. Afinal de contas, a biblioteca é parte do WordPress. O que você precisará fazer é usar uma alternativa para evitar problemas com o símbolo “$”.

Como corrigir o erro “Uncaught TypeError: $ is not a function” (2 maneiras)

Antes de começarmos, é importante observar que o jQuery já faz parte do WordPress. Alguns tutoriais instruirão você a consultar jQuery, mas a biblioteca faz parte do Sistema de Gerenciamento de Conteúdo (CMS) há algum tempo.

O WordPress também executa o jQuery no modo “noConflict” por padrão. Isso significa que ele libera o símbolo “$” para que outras bibliotecas possam usá-lo. Em vez de desativar o modo “noConflict”, é assim que você deve abordar esse problema.

O WordPress também roda jQuery no modo “noConflict” fora da caixa. Isso significa que ele libera o símbolo “$” para que outras bibliotecas possam usá-lo. Ao invés de desativar o modo “noConflict”, aqui está como você deve abordar este problema.

1. Use “jQuery” ao invés de “$”

Se você tiver problemas ao usar o símbolo “$” em funções, você pode usar “jQuery” em seu lugar. Para lhe dar um exemplo, aqui está como uma função básica jQuery usando “$” pode se parecer:

$(function() {
  // Your code here will run once the DOM is ready
});

Neste caso, uma solução rápida seria substituir o símbolo “$” por jQuery. O código então ficaria assim:

jQuery(function() {
  // This code will not trigger the error
});

Alternativamente, você pode “envolver” o código em uma expressão de função imediatamente invocada que contém o símbolo jQuery. O exemplo a seguir não acionaria o erro “Uncaught TypeError: $ is not a function” porque ele usa o símbolo jQuery como um invólucro:

jQuery(function ($) {
    // You can use $ inside the wrapper
    console.log($('.primary-menu'));
});

Após fazer estas alterações no código, você pode usar o console de desenvolvimento do seu navegador ou o registro de depuração do WordPress para ver se o erro persiste. Se persistir, você pode precisar mapear o “jQuery” para outro símbolo para contornar mais erros.

2. Use um pseudônimo personalizado em jQuery

“$” é o alias padrão para o objeto jQuery. No entanto, como o WordPress executa o jQuery no modo noConflict, você pode precisar mapear um alias alternativo para evitar conflitos com outras bibliotecas.

Esse processo é relativamente simples, pois você pode mapear o alias para um novo símbolo com uma única linha de código.

vvar $j = jQuery;

Esse código substitui o alias padrão por “$j”, mas pode ser qualquer outra coisa que você queira. Alguns desenvolvedores preferem essa abordagem em vez de ter que digitar o objeto “jQuery” completo, como mostramos no método anterior.

Se você não tem certeza de onde adicionar este código, você pode ler nosso tutorial sobre como adicionar código ao cabeçalho e rodapé no WordPress. Tenha em mente que mesmo se você registrar um novo alias, você ainda será capaz de usar “jQuery” em vez desse símbolo.

Resumo

O WordPress permite que você use jQuery em seu site. Entretanto, se você quiser evitar erros como “Uncaught TypeError: $ is not a function”, você precisará entender como o CMS implementa a biblioteca. O WordPress usa o modo “noConflict” do jQuery, o que significa que ele não reconhece o símbolo “$”.

O erro “Uncaught TypeError: $ is not a function” aparece quando você tenta usar uma função que chama jQuery usando “$”. Para contornar este problema, você pode digitar o objeto jQuery completo no lugar ou mapear o alias para um símbolo diferente para evitar conflitos.

Se você usa a Kinsta, você pode ativar o modo de depuração do WordPress no painel MyKinsta para diagnosticar problemas. Além disso, todos os nossos planos oferecem suporte de alta qualidade para ajudá-lo a resolver quaisquer problemas que você possa encontrar. Confira os nossos planos!