2012-08-07 13 views
21

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

私のテーマディレクトリにあるファイルを読み込めるようにするための最もクリーンな方法は何ですか?

おかげ

+0

あなたは完全に自分のスクリプトを無効にしますか、またはオーバーライド:


これには含まれており、すべてのスクリプトがwp_enqueue_script()によってロードまたは登録wp_register_script()で管理し$wp_scriptsグローバルオブジェクトを直接操作することによって解決することができます特定の行動や出来事? –

+0

さて、私はjavascriptファイル(add-to-cart-variation.js)を完全に上書きしようとしていました。 – Sebastien

+1

このファイルでは、doc readyにバインドされているイベントは2つしかないようです。あなたは自分のスクリプトでそれらをアンバインドすることができます。 line-4、line-216 https://github.com/woothemes/woocommerce/blob/master/assets/js/frontend/add-to-cart-variation.jsを参照してください。私はそのプラグインで作業していませんが、あなたは手動でそのファイルを変更することもできると思います。 –

答えて

27

私はアドオンに-cart.jsを除いて同じ問題を抱えていました。シンプルな解決策は、woocommerceスクリプトをDEQUEUEにして、あなたの取り替えを保留することです。私の場合、私は私のの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-アドオンに-カート-変動」スクリプトをデキューしたいと思います。私はあなたがと同じ名前でを持っているとは思わないが、理由がわからない。

これが役に立ちます。

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

それは同じ名前でエンキューするのが良いですがある可能性があり。 – Leonel

+2

同じハンドルを使用してエンキューしようとすると、元のハンドルを再度エンキューする前に元のハンドルを 'wp_dequeue_script()'で登録解除しない限り、元のファイルはエンキューされます。 – cfx

+0

あなたも私の質問を確認してくださいhttp://wordpress.stackexchange.com/questions/215238/how-to-add-quick-edit-in-woocommerce-order-section –

1

class-wc-frontend-scripts.phpファイルであなたの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'); 
19

WooCommerce負荷のフロントエンドスクリプトとスタイルをこのセクションを追加し、スクリプトが登録されているどのようにそこに見つけることができます:あなたは、次のスクリプトを使用することができますローカライズされた依存関係が含まれます。

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

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

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'; 
    } 
+0

最後の1つは、私のために働く、感謝の束 –

+0

私は '$ wp_scripts'オプションが好きです。スクリプトの依存関係やバージョンなどを気にする必要はありません。+1 –

+0

これは真剣にそのような素晴らしい答えです!私はあなたと一緒に働くことができない、またはあなたが変更できる '$ wp_scripts'オブジェクトがあったということを知らなかった。これは素晴らしいです!私はあなたにビールを買いたい! – Radmation

関連する問題