web-dev-qa-db-ja.com

設定ページにのみプラグインjsを読み込むにはどうすればよいですか?

私はいくつかのデフォルトのワードプレス機能と競合しているプラ​​グインを持っています。投稿とページの作成/編集エリア。自分の設定ページにある機能だけが必要です。 jsファイルを管理者にロードしても問題ありません。

プラグの設定ページを表示していない限り、スクリプトを読み込まないように指示できますか?

2
dcp3450

プラグインページ固有のスクリプトエンキューフックを使用する必要があります。

編集する

ベストプラクティスの方法は、admin_enqueue_scripts-{hook}ではなくadmin_print_scirpts-{hook}を使用することです。しかし、あなたは特にあなた自身のプラグインの管理者ページをターゲットにしているので、どちらでも完璧です。

避けるべきフックは "global" admin_print_scriptsです。

元の

呼び出しは次のようになります。

    /* Using registered $page handle to hook script load */
    add_action('admin_print_scripts-' . $page, 'my_plugin_admin_scripts');

そして$pageフックを次のように定義します。

$page = add_submenu_page( $args );

回答はコピーされた 直接コーデックス外

<?php
add_action( 'admin_init', 'my_plugin_admin_init' );
add_action( 'admin_menu', 'my_plugin_admin_menu' );

function my_plugin_admin_init() {
    /* Register our script. */
    wp_register_script( 'my-plugin-script', plugins_url('/script.js', __FILE__) );
}

function my_plugin_admin_menu() {
    /* Register our plugin page */
    $page = add_submenu_page( 'edit.php', // The parent page of this menu
                              __( 'My Plugin', 'myPlugin' ), // The Menu Title
                              __( 'My Plugin', 'myPlugin' ), // The Page title
              'manage_options', // The capability required for access to this item
              'my_plugin-options', // the slug to use for the page in the URL
                              'my_plugin_manage_menu' // The function to call to render the page
                           );

    /* Using registered $page handle to hook script load */
    add_action('admin_print_scripts-' . $page, 'my_plugin_admin_scripts');
}

function my_plugin_admin_scripts() {
    /*
     * It will be called only on your plugin admin page, enqueue our script here
     */
    wp_enqueue_script( 'my-plugin-script' );
}

function my_plugin_manage_menu() {
    /* Output our admin page */
}
?>
4
Chip Bennett

あなたの生活をより簡単にし、コーディングをより速くするために(コアファイル検索は不要です)、"Current Admin Info"プラグインを書きました。

こうすれば、adminグローバルまたはget_current_screen()関数から戻ってきたものを簡単に見ることができ、追加のコンテキストヘルプタブに表示されるプロパティを使用してアクセスできます。

// See dump
var_dump( get_current_screen()->property );

# @example
// Get the post type
$post_type = get_current_screen()->post_type;
// Get the current parent_file (main menu entry that meets for every submenu)
$parent = get_current_screen()->parent_file;

enter image description here

enter image description here

2
kaiser