web-dev-qa-db-ja.com

プラグインを介してすべての管理ページにJavaScriptファイルを追加する方法を教えてください。

コンテキスト:ログインしているユーザーの場合、CloudflareのキャッシュをバイパスするようにURLにクエリ文字列を追加します。たとえば、example.comはexample.com/?nocache=yになります。

私は以下のコードでこれを非常に簡単に達成しました:

function tbcloudflare_query_arg() {   
if(is_user_logged_in()){
        wp_enqueue_script( 'tbcloudflare_check_query', plugin_dir_url( __FILE__ ) . 'js/tbcloudflare.js', array('jquery'), '1.0' );
     }
 }
 add_action('wp_enqueue_scripts', 'tbcloudflare_query_arg');

私はソース内のファイルを見ることができます、そしてそれはフロントエンドページではうまく働きますが、もちろんバックエンドではうまくいきません。だから、私は試してみました:

function tbcloudflare_admin_query_arg($hook){
    wp_enqueue_script( 'tbcloudflare_check_query', plugin_dir_url( __FILE__ ) . 'js/tbcloudflare.js', array('jquery'), '1.0' );
}
add_action('admin_enqueue_scripts', 'tbcloudflare_admin_query_arg' );

この質問はさまざまな形で以前に尋ねられています、そして上記のコード構造は多くの例からまっすぐです。しかし4.7.2では動作させることができません。

これはfunctions.phpファイルではなくプラグインからロードする必要があります。何がおかしいのでしょうか。コードがhtmlソースに表示されない、またはChromeの検査ソースを介してロードされたことを示す。

2
user658182

Plugin Developer Handbook では、JSファイルへのURLを作成するためにplugins_url()を使用することを推奨しています。スクリプトローダー内でその関数を使用し、コンテキストに応じてスクリプトに異なるハンドルを使用して(adminスクリプト名の先頭に「admin-」を付けるなど)、スクリプトの登録が競合しないようにしてください。

あるいは、スクリプトを1回だけ登録し、必要に応じてエンキューフックでエンキューすることもできます。

1
Morgan Estes