在WordPress中,使用action钩子自定义admin页面是一个常见的做法。以下是使用action钩子来自定义admin页面的基本步骤:
1. 添加自定义菜单项
首先,你需要添加一个自定义菜单项到WordPress的admin菜单中。
function my_custom_menu_page() {
add_menu_page(
'My Custom Page', // 页面标题
'Custom Menu', // 菜单标题
'manage_options', // 能看到此菜单的用户角色
'my-custom-page', // 页面slug
'my_custom_page_html', // 调用函数输出页面内容
'dashicons-admin-site-alt3', // 图标类名
6 // 位置
);
}
add_action('admin_menu', 'my_custom_menu_page');
2. 创建页面内容
接下来,创建一个函数来输出你的自定义页面内容。
function my_custom_page_html() {
?>
<div class="wrap">
<h1>My Custom Admin Page</h1>
<form method="post" action="options.php">
<?php
settings_fields('my_custom_page_settings');
do_settings_sections('my_custom_page');
submit_button();
?>
</form>
</div>
<?php
}
3. 注册设置
如果你的页面需要处理表单提交和保存设置,你需要注册设置。
function my_custom_page_register_settings() {
register_setting('my_custom_page_settings', 'my_option_name');
add_settings_section(
'my_custom_page_section',
'My Custom Section',
'my_custom_page_section_html',
'my_custom_page'
);
add_settings_field(
'my_custom_page_field',
'My Custom Field',
'my_custom_page_field_html',
'my_custom_page',
'my_custom_page_section'
);
}
add_action('admin_init', 'my_custom_page_register_settings');
function my_custom_page_section_html() {
echo '<p>Enter your settings below.</p>';
}
function my_custom_page_field_html() {
$value = get_option('my_option_name');
echo '<input type="text" id="my_option_name" name="my_option_name" value="' . esc_attr($value) . '" />';
}
4. 加载脚本和样式
如果你需要为自定义页面添加CSS或JavaScript,可以使用以下钩子。
function my_custom_page_enqueue_scripts($hook) {
if ($hook != 'toplevel_page_my-custom-page') {
return;
}
wp_enqueue_style('my-custom-style', get_template_directory_uri() . '/admin-style.css');
wp_enqueue_script('my-custom-script', get_template_directory_uri() . '/admin-script.js', array('jquery'), false, true);
}
add_action('admin_enqueue_scripts', 'my_custom_page_enqueue_scripts');
5. 完整示例
将以上代码片段放入你的主题的 functions.php
文件中或创建一个插件来包含这些代码。确保在WordPress后台中激活你的插件或更新主题,然后访问“Custom Menu”菜单项查看你的自定义admin页面。
通过以上步骤,你可以使用WordPress的action钩子来自定义admin页面,添加菜单项、表单、设置和脚本。