如何将自定义JavaScript添加到WordPress管理员?

Nac*_*cho 32 javascript php wordpress jquery

我想在Edit Post页面添加一些自定义jquery代码,非常简单,比如当有人按下Publish时显示div.

唯一的限制是我想通过使用插件实现这一点,而不是破解管理模板文件.

我尝试使用某些动作回显一些脚本标签,但似乎不是这样.

Tim*_*Tim 64

使用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');
Run Code Online (Sandbox Code Playgroud)

  • 这是当前版本的WordPress的正确答案(该示例直接从WordPress Codex中提取). (4认同)
  • 我应该将此代码放在什么文件中?这段代码应该放在文件中的什么位置? (2认同)

Fed*_*TIK 45

您的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');
Run Code Online (Sandbox Code Playgroud)

在Wordpress 3.2.1上正常工作.

  • 这是添加脚本的错误方法.您应该将脚本排入队列,如[Tim的答案](http://stackoverflow.com/a/21914399/1924128)所示. (2认同)

Sea*_*her 20

<?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');

?>
Run Code Online (Sandbox Code Playgroud)

  • 好吧,如果你想要它也适用于新的帖子页面,你可以试试这个:<?php function add_jquery_data(){global $ parent_file; if(is_admin()&& $ parent_file =='edit.php'){//做一些事情.}>?> (4认同)

Sha*_*ill 6

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' );
} );
Run Code Online (Sandbox Code Playgroud)

但是,如果您想使用 PHP 函数输出 javascript,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 );
Run Code Online (Sandbox Code Playgroud)