我想编写我的第一个WordPress插件,可能需要一些帮助。单击我的插件的菜单项时,我不知道如何将我的javascript文件添加到仪表板区域头。这就是我到目前为止所做的:
第1步:
在wp-content/plugins
目录中创建了一个目录和一个php文件,添加了这个插件的头部:
/* Plugin Name: Test Plugin
Plugin URI: http://my-plugin.com/
Description: test test test
Version: 1.0
Author: me
Author URI: http://my-plugin.com/
License: GPLv2 or later
*/
第二步: 使用此功能,我在仪表板菜单的底部添加我的插件名称(顶级菜单项名称)。我甚至不知道为什么名称和slug名称列出两次。我从here获得了代码。我也不知道“mt-top-level-handle”是做什么的。它没有任何功能,它仍然有效。 “manage_options”是功能变量,用于定义此页面上的用户权限。 (任何人都知道如何让这个页面只能访问管理员,(作者)?)
add_action( 'admin_menu', 'register_my_menu_item' );
function register_my_menu_item() {
add_menu_page(__('top level menu item name','slug-name'), __('top level menu item name','slug-name'), 'manage_options', 'mt-top-level-handle', 'my_plugins_page' );
}
第3步: 这个简单的函数在插件页面上显示“Hello World”。
function edit_table_page() {
?>
<h2>Hello World</h2>
<?php
}
现在,我想知道如何在该插件页面上使用我的javascript文件。我需要在加载jquery文件后添加它。
我发现添加脚本的所有内容都是:
add_action('wp_enqueue_scripts', 'my_scripts');
function my_scripts() {
wp_enqueue_script('jquery');
wp_register_script('my_script', plugins_url('js/my_script.js', __FILE__),array("jquery"));
wp_enqueue_script('my_script');
}
那不起作用。那怎么做对了? :)
答案 0 :(得分:3)
add_menu_page()
会在成功时返回钩子名称。您可以利用它将您的脚本排入动态load-{$hookname}
挂钩:
add_action( 'admin_menu', 'register_my_menu_item' );
function register_my_menu_item()
{
$my_plugins_page = add_menu_page(
__( 'top level menu item name','my_plugin_textdomain' ),
__( 'top level menu item name', 'my_plugin_textdomain' ),
'manage_options',
'mt-top-level-handle',
'my_plugins_page'
);
add_action( 'load-' . $my_plugins_page, 'so20659191_enqueue' );
}
function so20659191_enqueue()
{
wp_enqueue_script( 'my_script', plugins_url( 'js/my_script.js', __FILE__ ), array( 'jquery' ), null, true );
}
function my_plugins_page() {
?>
<h2>Hello World</h2>
<?php
}
答案 1 :(得分:0)
找到解决方案! 添加js-files:
add_action('admin_enqueue_scripts', 'my_scripts'); // add scripts to dashboard head
function my_scripts() {
wp_enqueue_script('jquery');
wp_register_script('my_script', plugins_url('js/my_script.js', __FILE__),array("jquery"));
wp_enqueue_script('my_script');
}
添加CSS文件:
add_action('admin_enqueue_scripts', 'my_styles');
function my_styles() {
wp_register_style( 'custom_wp_admin_css', plugins_url('my-plugin/css/style.css'));
wp_enqueue_style( 'custom_wp_admin_css' );
}