web-dev-qa-db-fra.com

Script AWS en file d'attente

Je travaille sur l'intégration d'un Amazon Webstore (Amazon Checkout) sur un site WordPress utilisant Amazon Documentation ici . Cela fait un moment que je travaille avec la mise en file d'attente de JScripts externes. Je dois charger deux scripts d'Amazon. J'ai ajouté du code à functions.php, mais il semble que je me suis trompé et que je continue à obtenir des erreurs telles que:

TypeError: 'undefined' is not a function (evaluating '$(jQuery(document).find("#globalParameters"))'). 

Sur merchant_cart.js: 5

Voici le code:

    function img_scripts_with_jquery()
{
    // Register the script like this for a theme:
    wp_register_script( 'aws-cba', 'https://images-na.ssl-images-Amazon.com/images/G/01/cba/js/common/cba_shared.js',  array( 'jquery' ));

    // For either a plugin or a theme, you can then enqueue the script:
    wp_enqueue_script( 'aws-cba' );
    //second script
        wp_register_script( 'aws-merchant-cart', 'https://images-na.ssl-images-Amazon.com/images/G/01/cba/js/shoppingcart/merchant_cart.js',  array( 'jquery' ));

    // For either a plugin or a theme, you can then enqueue the script:
    wp_enqueue_script( 'aws-merchant-cart' );
}
add_action( 'wp_enqueue_scripts', 'img_scripts_with_jquery' );

Quelle erreur de codage est-ce que je fais ici? la mise en file d'attente de ces deux scripts externes a-t-elle besoin de jQuery?

Mettre à jour

Charger des scripts dans le pied de page améliore les choses, mais quand j'ai ajouté le bouton pour charger le panier, j'ai toujours la même erreur. Le script actuel est maintenant:

/Enqueue AWS Scripts

function img_scripts_with_jquery()
{
    // Register the First Script:
    wp_register_script( 'aws-cba', 'https://images-na.ssl-images-Amazon.com/images/G/01/cba/js/common/cba_shared.js',  array( 'jquery' ),'version', true );

    // Enqueue it:
    wp_enqueue_script( 'aws-cba' );
    //Register Second Script
        wp_register_script( 'aws-merchant-cart', 'https://images-na.ssl-images-Amazon.com/images/G/01/cba/js/shoppingcart/merchant_cart.js',  array( 'jquery' ), 'version', true);

    // Enqueue this one too:
    wp_enqueue_script( 'aws-merchant-cart' );
}
add_action( 'wp_enqueue_scripts', 'img_scripts_with_jquery' );

Mise à jour II

Firebug a décrit l'erreur comme suit:

TypeError: $ is not a function
https://images-na.ssl-images-Amazon.com/images/G/01/cba/js/shoppingcart/merchant_cart.js?ver=version
Line 5

On dirait un conflit jQuery ..

2
rhand

Essayez de sauvegarder jQuery.noConflict(); sous le nom jquery-no-conflict.js. Puis mettez tout en file d'attente avec les dépendances appropriées:

<?php
function img_scripts_with_jquery() {
    wp_enqueue_script(
        'jquery-no-conflict',
        'path/to/jquery-no-conflict.js',
        array(
            'jquery'
        ),
        'version',
        true
    );
    wp_enqueue_script(
        'aws-cba',
        'https://images-na.ssl-images-Amazon.com/images/G/01/cba/js/common/cba_shared.js',
        array(
            'jquery-no-conflict'
        ),
        'version',
        true
    );
    wp_enqueue_script(
        'aws-merchant-cart',
        'https://images-na.ssl-images-Amazon.com/images/G/01/cba/js/shoppingcart/merchant_cart.js',
        array(
            'jquery-no-conflict'
        ),
        'version',
        true
    );
}
add_action( 'wp_enqueue_scripts', 'img_scripts_with_jquery' );
1
Max Yudin