Как добавить пользовательский javascript в WordPress Admin?
Я хочу добавить некоторый пользовательский код jquery на страницу "Редактировать сообщение", что-то действительно простое, например, показ div, когда кто-то нажимает "Опубликовать".
Единственное ограничение заключается в том, что я хочу достичь этого с помощью плагина, а не для взлома файлов шаблонов admin.
Я попытался повторить некоторые теги script, используя некоторые действия, но, похоже, это не так.
Ответы
Ответ 1
Используйте действие admin_enqueue_scripts
и метод wp_enqueue_script
для добавления пользовательских сценариев в интерфейс администратора.
Это предполагает, что у вас есть myscript.js
в папке плагинов. Измените соответственно. Дескриптор my_custom_script
должен быть уникальным для вашего модуля и скрипта.
function my_enqueue($hook) {
// Only add to the edit.php admin page.
// See WP docs.
if ('edit.php' !== $hook) {
return;
}
wp_enqueue_script('my_custom_script', plugin_dir_url(__FILE__) . '/myscript.js');
}
add_action('admin_enqueue_scripts', 'my_enqueue');
Ответ 2
Для вашего файла functions.php есть фрагмент:
function custom_admin_js() {
$url = get_bloginfo('template_directory') . '/js/wp-admin.js';
echo '"<script type="text/javascript" src="'. $url . '"></script>"';
}
add_action('admin_footer', 'custom_admin_js');
Прекрасно работает на Wordpress 3.2.1.
Ответ 3
<?php
function add_jquery_data() {
global $parent_file;
if ( isset( $_GET['action'] ) && $_GET['action'] == 'edit' && isset( $_GET['post'] ) && $parent_file == 'edit.php') {
// Do some stuff.
}
}
add_filter('admin_head', 'add_jquery_data');
?>
Ответ 4
admin_enqueue_scripts
и wp_enqueue_script
являются предпочтительным способом добавления файлов javascript на панель инструментов.
// I'm using an anonymous function for brevity.
add_action( 'admin_enqueue_scripts', function() {
wp_enqueue_script( 'handle', plugin_dir_url( __FILE__ ) . '/script.js' );
} );
Однако если вы хотите вывести javascript с помощью функции PHP, wp_add_inline_script
не работает. Вместо этого вы можете использовать admin_print_scripts
для прямого вывода сценария, включая сами теги сценария. Просто установите высокий приоритет, чтобы он загружался после любых необходимых библиотек, таких как jQuery
.
add_action( 'admin_print_scripts', function() {
// I'm using NOWDOC notation to allow line breaks and unescaped quotation marks.
echo <<<'EOT'
<script type="text/javascript">
jQuery(function($){
// Do stuff here.
});
</script>
EOT;
}, PHP_INT_MAX );
Ответ 5
Если вы хотите получить фантазию и отфильтровать, где вы хотите загрузить файл или нет, лучше всего использовать get_current_screen
.
function myproject_admin_enqueue() {
$screen = get_current_screen();
// load on the NEW and EDIT screens of all post types
if ( 'post' === $screen->base ) {
wp_enqueue_script('my_custom_script', plugin_dir_url( __FILE__ ) . 'all-admin.js');
}
// load on the NEW and EDIT screens of one post type
if ( 'post' === $screen->base && 'myposttype' === $screen->post_type ) {
wp_enqueue_script('my_custom_script', plugin_dir_url( __FILE__ ) . 'mypostype-admin.js');
}
// load only when adding a NEW post, not when editing an existing one.
if ( 'post' === $screen->base && 'add' === $screen->action ) {
wp_enqueue_script('my_custom_script', plugin_dir_url( __FILE__ ) . 'new-admin.js');
}
}
add_action('admin_enqueue_scripts', 'myproject_admin_enqueue');