Добавление скриптов в Админку
Я хотел бы ставить в очередь сценарии только для созданной мной страницы администратора.
Вот пример этого здесь: 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( ... );
}
Это работает. Но это кажется более сложным, чем должно быть. Есть ли лучший способ сделать это?
Спасибо!
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;
, вы должны предоставить свой собственный слизняк. Сценарии будут загружены только для вашей конкретной страницы, и нет необходимости проверять их в вашей функции постановки в очередь.