web-dev-qa-db-ja.com

Script-loader.phpを使って自分のスクリプトをadminに追加するにはどうすればいいですか?

WordPress自体が管理領域にスクリプトを読み込むのと同じ方法で、管理パネルに自分のカスタムスクリプトを読み込もうとしています。

これはwp-includes/script-loader.phpによってロードされるスクリプトの例です。

$scripts->add(
    'password-strength-meter',
    "/wp-admin/js/password-strength-meter$suffix.js",
    array( 'jquery', 'zxcvbn-async' ), 
    false, 
    1
);

そこで私は自分自身のスクリプトを同じ方法で追加しようとしました。私 :

  • user-profile-validator.js内に/wp-admin/js/という名前のファイルを作成しました(これも縮小バージョンを作成しました)
  • 次のコードを使用してそれをエンキューしようとしました。

$scripts->add(
    'user-profile-validator',
    "/wp-admin/js/user-profile-validator$suffix.js",
    array( 'jquery' ), 
    false, 
    1
);

しかし、何も起こりませんでした。URLに追加されることも、ロードされたスクリプトの中から自分のスクリプトを見つけることもできません。

なんでこんなことが起こっているの?

PS: 私はパッチを作っている、それが私がコアファイルを修正する理由です。

1
Jack Johansson

私はあなたがたは登録のみであると思う:

$scripts->add( 'user-profile-validator', ...)

しかしenqueueingそれではありません。

確認してください。 how wp_register_script()WP_Scripts::add()メソッドのラッパーです。

さらに追加:

wp_enqueue_script( 'user-profile-validator' );

関連する管理ファイルでそれをエンキューするか、または他のエンキューされたスクリプトのdependencyとして追加します。

password-strength-meteruser-profileスクリプトに対する依存関係です。

$scripts->add( 
    'user-profile', 
    "/wp-admin/js/user-profile$suffix.js", 
    array( 'jquery', 'password-strength-meter', 'wp-util' ), 
   false, 
   1 
);

それはキューに入れられます:

wp_enqueue_script( 'user-profile' );

バックエンドで。

1
birgire