web-dev-qa-db-ja.com

wp_enqueue_scriptとwp_register_script

ここで正しいことをやろうとしていて、そして結び目の中で自分を結ぶ! wp_adminの前の私のheader.phpには、

wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable'), '1.0', true);

これはうまくいきます。基本的に、私は依存関係としてjqueryとjqueryuiを必要とするカスタムjsファイルを持っています。それは無関係に2回ロードされるように見えるので私は以来 'jquery'を取り出しました。 functions.phpで 'init'にフックされた関数もありましたが、それは何の利点もないようでしたか?

これも私のカスタムスクリプトの依存関係になるので、私はCDNからの検証スクリプトを含めたいと思います。私はそのようにスクリプトを登録すると思いました:

wp_register_script('validate', 'http://ajax.Microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.min.js', true);

次のようにして、エンキューの依存関係配列に 'validate'を追加します。

wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable', 'validate'), '1.0', true);

その順番で、jqueryもvalidateの依存関係です。あー!それはうまくいきません、私は明らかに何かを誤解しています - 私がここでやろうとしていることをuncurl助けてください...

2
Richard Lane

私はあなたがスクリプトを同様にエンキューするべきだと思います(あなたの検証スクリプトのために)問題を回避するために1つの関数全体を囲むようにします #11526 :電話をかける

したがって、すべて一緒に:

<head>
...
<?php 

function mytheme_enqueue_script() {
// Load jQuery
wp_enqueue_script('jquery');
// Load draggable
wp_enqueue_script('jquery-ui-draggable');
//load your script
wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable'), '1.0', true);
// Load validate
wp_enqueue_script('validate','http://ajax.Microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.min.js', array('jquery'), true);
}

add_action('wp_enqueue_script', 'mytheme_enqueue_script');

すみません、私はまだこれをテストしていません。だから私はオフかもしれません。

2
chrisjlee

それは無関係に2回ロードされるように見えるので私は以来 'jquery'を取り出しました。

これは起こるべきではなく、おそらく他の(貧弱な)コードがアクティブであることが原因です。

trueの登録に間違ったvalidateがあります - ソースが依存関係の配列になってからtrueが無意味になった後。

それ以外の場合、これは一般的に問題ないようです。クイックテストから動作します。正確には何がどのように「機能しない」のか、より正確に説明していただけませんか。

1
Rarst