web-dev-qa-db-fra.com

TypeError: $ n'est pas une fonction Wordpress

Je pourrais avoir une erreur dans un document .js dans un thème que j'ai acheté:

$('.tagcloud a').wrap('<span class="st_tag" />');

J'essaie de le résoudre mais je ne suis pas un programmeur, donc je ne sais pas comment… .. Le site est le suivant: http://www.framerental.com .

37
user1645326

Vous utilisez jQuery.noConflict(); Donc $ n'est pas défini.

Vous pouvez en lire plus ici docs

Essayez de modifier votre code de cette manière (ajoutez le signe $ à la fonction Ready):

jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
});
116
jurka

Les erreurs de fonction sont courantes dans presque tous les systèmes de gestion de contenu et vous pouvez y remédier de différentes manières.

  1. Enveloppez votre code en utilisant:

    <script> 
    jQuery(function($) {
    
    YOUR CODE GOES HERE
    
    });
    </script>
    
  2. Vous pouvez également utiliser l'API jQuery à l'aide de noConflict();

    <script>
    $.noConflict();
    jQuery( document ).ready(function( $ ) {
    // Code that uses jQuery's $ can follow here.
    });
    // Code that uses other library's $ can follow here.
    </script>
    
  3. Un autre exemple d'utilisation de noConflict sans utiliser le document prêt:

    <script>
    jQuery.noConflict();
        (function( $ ) {
            $(function() { 
                // YOUR CODE HERE
            });
         });
    </script>
    
  4. Vous pouvez même choisir de créer votre alias même pour éviter les conflits, comme ceci:

    var jExample = jQuery.noConflict();
    // Do something with jQuery
    jExample( "div p" ).hide();
    
  5. Une autre solution plus longue consiste à renommer toutes les références de $ en jQuery:

    $( "div p" ).hide(); à jQuery( "div p" ).hide();

32
Simon Hayter

Au lieu de faire ceci:

$(document).ready(function() { });

Vous devriez faire ceci:

jQuery(document).ready(function($) {

    // your code goes here

});

En effet, WordPress peut utiliser $ pour autre chose que jQuery, dans le futur ou maintenant, et vous devez donc charger jQuery de manière à ce que $ ne puisse être utilisé que dans un rappel de document prêt pour jQuery.

11
Guy Castell

Ajoutez simplement ceci:

<script>
var $ = jQuery.noConflict();
</script>

à la balise head dans header.php. Ou si vous voulez utiliser le signe dollar dans la zone d'administration (ou quelque part, où header.php n'est pas utilisé), juste avant l'endroit où vous souhaitez l'utiliser. 

(Il se peut que vous ne connaissiez pas certains conflits. Essayez-le et, le cas échéant, utilisez les autres solutions proposées ici ou sur le lien ci-dessous.)

Source: http://www.wpdevsolutions.com/use-the-dollar-sign-in-wordpress-instead-of-jquery/

9
Fanky

J'ai ajouté un fichier de script personnalisé chargé à la fin de la section head et inséré ce qui suit en haut:

(function (jQuery) {
    window.$ = jQuery.noConflict();
})(jQuery);

(Ceci est une modification de la réponse de Fanky)

6
Savage

Autre que noConflict, ceci est également utile:

(function( $ ) {
    // Variables and DOM Caching using $.
    var body = $('body');
    console.log(body);
})( jQuery );
4
Waqar Alamgir

Si vous avez inclus jQuery, il peut y avoir un conflit. Essayez d’utiliser jQuery au lieu de $.

1
Giles Tamplin

J'ai pu résoudre très facilement mon problème de mise en file d'attente de jQuery wp_enqueue_script("jquery");

0
Dan Osborne