web-dev-qa-db-ja.com

AWSスクリプトのエンキュー

私はAmazon Documentation を使ってWordPressサイトにAmazon Webstore(Amazon Checkout)を統合することに取り組んでいます 。私が外部JScriptをエンキューする作業をしてからしばらく経ちました。 Amazonから2つのスクリプトをロードする必要があります。 functions.phpにコードをいくつか追加しましたが、間違いを犯したようで、次のようなエラーが表示され続けます。

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

Merchant_cart.js上:5

これがコードです:

    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' );

ここでコーディングの間違いをしていますか? jQueryを必要とするこれら2つの外部スクリプトのエンキューはOKですか?

更新

フッターにスクリプトをロードすることで物事は良くなりますが、カートをロードするためのボタンを追加しても同じエラーが発生します。現在のスクリプトは次のとおりです。

/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' );

アップデートII

Firebugはこのエラーを次のように説明しています。

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

JQueryの競合のように思えます。

2
rhand

jQuery.noConflict();jquery-no-conflict.jsとして保存してみてください。次に、適切な依存関係を持つすべてのものをエンキューします。

<?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