Как добавить пользовательский JavaScript в WordPress Admin? - PullRequest
29 голосов
/ 25 июля 2010

Я хочу добавить некоторый пользовательский код jquery на страницу редактирования сообщения, что-то действительно простое, например, показать div, когда кто-то нажимает Опубликовать.

Единственное ограничение заключается в том, что я хочу добиться этого с помощью плагина, а не взлома файлов шаблонов администратора.

Я пытался повторить некоторые теги сценария, используя некоторые действия, но, похоже, это не так.

Ответы [ 4 ]

59 голосов
/ 20 февраля 2014

Используйте действие 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');
42 голосов
/ 16 декабря 2011

Для вашего файла 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.

19 голосов
/ 25 июля 2010
<?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');

?>
3 голосов
/ 08 мая 2018

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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...