Добавление скриптов в Админку


Я хотел бы ставить в очередь сценарии только для созданной мной страницы администратора.

Вот пример этого здесь: http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Load_scripts_only_on_plugin_pages

Но это не работает для меня, я думаю, потому что я пишу свой плагин в классе. add_action работает только с конструктором??

Есть ли способ добавить сценарии на определенную страницу из класса?

Я пришел покончите с этим методом: Моя главная страница плагина - это список пользовательских типов сообщений (если вы зададите 'show_in_menu' => 'custom_page_slug' в аргументах типа сообщения, он займет эту страницу со списком сообщений). Когда я создавал тип записи, я установил переменную с именем типа записи:

$args = register_post_type('post-type', $args );
$this->posttype = $args->name;

Затем этот вызов в конструкторе:

add_action( 'admin_print_scripts', array( &$this, 'scripts_init' ) );

И это в функции scripts_init:

global $current_screen;    
if( $current_screen->id == $this->posttype )
{
wp_enqueue_script( ... );
}

Это работает. Но это кажется более сложным, чем должно быть. Есть ли лучший способ сделать это?

Спасибо!

Author: chrisguitarguy, 2011-06-12

1 answers

Вместо того, чтобы подключаться к admin_print_scripts только, вы должны подключиться к вашей конкретной странице, которая добавляется к admin_print_scripts-. (обратите внимание на завершающий дефис). На справочной странице, на которую вы ссылаетесь, показано это, но вы, похоже, опускаете объединение $page, чтобы admin_print_scripts-.

Например:

$page = add_theme_page( 'Options', 'Options', 'edit_theme_options', 'options-panel', 'topf_admin_options_markup' );

add_action( "admin_print_scripts-$page", 'enqueue_my_admin_scripts' );

Я использую слизняк $page, возвращенный из add_theme_page;, вы должны предоставить свой собственный слизняк. Сценарии будут загружены только для вашей конкретной страницы, и нет необходимости проверять их в вашей функции постановки в очередь.

 5
Author: Jeff, 2011-06-12 11:55:47