Mi sono ritrovata a dover gestire delle funzioni JQuery in un plugin per WordPress, e l’errore restituito era quello del titolo:
$ is not a function.

Il trucco, che per me ha funzionato, è sostituire tutti i segni di dollaro $ con jQuery.
Esempio pratico: mettiamo che il codice che sto utilizzando sia

$(document).ready(function(){
   $("a").click(function(event){
     alert("Grazie per la visita!");
   });
 });

Basta cambiare il codice in questo modo:

jQuery(document).ready(function(){
   jQuery("a").click(function(event){
     alert("Grazie per la visita!");
   });
 });

e tutto funzionerà come deve.

Oppure, come ha giustamente suggerito da Vinz nel commento qui sotto, inserire $ come parametro di function:

jQuery(document).ready(function($){
   $("a").click(function(event){
     alert("Grazie per la visita!");
   });
 });