web-dev-qa-db-ja.com

WooCommerceフロントエンドJavascriptを上書きする

WooCommerceコアJavascriptファイル、特にフロントエンドファイルを上書きする適切な方法を誰かに教えてもらえますか?私はこれに関するドキュメントを見つけておらず、コードを見て、フロントエンドスクリプトファイルへのパスはプラグインでハードコーディングされているため、テーマにアセットフォルダを配置しても何も起こらないと思います。

私のテーマディレクトリにあるファイルを読み込むことができるように、これを行う最もクリーンな方法は何ですか?

ありがとう

25
Sebastien

Add-to-cart.js以外は同じ問題がありました。簡単な解決策は、woocommerceスクリプトをデキューし、代わりのものをエンキューすることです。私の場合、私はfunctions.phpに以下を追加しました:

wp_dequeue_script('wc-add-to-cart');
wp_enqueue_script( 'wc-add-to-cart', get_bloginfo( 'stylesheet_directory' ). '/js/add-to-cart-multi.js' , array( 'jquery' ), false, true );

「wc-add-to-cart-variation」スクリプトをデキューする必要があります。 haveが同じ名前でENQUEUEを実行することはないと思いますが、そうしない理由はわかりませんでした。

お役に立てれば。

WordPressバージョン4.0.1およびWooCommerceバージョン2.2.10を使用している場合。次のスクリプトを使用できます。


wp_deregister_script('wc-add-to-cart');
wp_register_script('wc-add-to-cart', get_bloginfo( 'stylesheet_directory' ). '/js/add-to-cart-multi.js' , array( 'jquery' ), WC_VERSION, TRUE);
wp_enqueue_script('wc-add-to-cart');
30
Simon Unger

WooCommerceはフロントエンドスクリプトとスタイルを_class-wc-frontend-scripts.php_ファイルにロードし、スクリプトの登録、エンキュー、ローカライズ、および依存関係を見つけることができます。

Wordpressでスクリプトをエンキューするための推奨される場所は、_wp_enqueue_scripts_アクションフックです。これは、Wordpressが完全にロードされた後、出力が行われる前の瞬間だからです。また、関連するすべてのスクリプトとスタイルをコードの1つのセクションにエンキューすることも好きです。

一部のスクリプトを完全に削除する場合は、wp_deregister_script()またはwp_dequeue_script()を呼び出すだけで十分です。ただし、変更を加えて既存の依存関係、変数、およびローカリゼーションを残したい場合は、テーマの前にプラグインがロードされるため、問題が発生することがあります。したがって、エンキュー関数は期待どおりに機能しません。単純なwp_dequeue_script() => wp_enqueue_script()機能しない であり、wp_deregister_script() => wp_register_script()は機能しますが、ローカライズされたデータは失われます。


これは、wp_enqueue_script()を通じてロードされた、またはwp_register_script()で登録されたすべてのスクリプトを含み、管理する_$wp_scripts_グローバルオブジェクトを直接操作することで解決できます。

_    add_action( 'wp_enqueue_scripts', 'load_theme_scripts' );

    function load_theme_scripts() {
        global $wp_scripts; 
        $wp_scripts->registered[ 'wc-add-to-cart' ]->src = get_template_directory_uri() . '/woocommerce/js/wc-add-to-cart.js';
    }
_
21
Danijel

このセクションをfunction.phpに追加します

function themeslug_enqueue_script() {
wp_enqueue_script( 'add-to-cart-variation', get_bloginfo( 'url' ). '/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.js', false );
}
add_action( 'wp_enqueue_scripts', 'themeslug_enqueue_script' );
1
Ritcher