返回上一级
WordPress后台顶部添加显示选项和帮助选项卡
如何在后台顶部右上角添加 显示选项卡 和 帮助选项卡 。
通过wordpress提供的接口可以轻易实现该功能。
在 add_action('admin_menu', '')
创建菜单中,添加以下内容:
1add_action('admin_menu', function () {
2 $krjojo_tool = add_submenu_page(
3 'krjojo_slug',
4 '插件完整标题',
5 '插件左标题',
6 'manage_options',
7 'krjojo_tool_slug',
8 'krjojo_tool_html'
9 );
10
11 add_action('load-' . $krjojo_tool, function () {
12
13 // 创建分页选项
14 add_screen_option('per_page', [
15 // 'label' => '每页显示',
16 'default' => 20,
17 'option' => 'krjojo_tool_per_page'
18 ]);
19
20 // 创建帮助选项卡
21 $screen = get_current_screen();
22 $screen->add_help_tab([
23 'id' => 'krjojo_tool_email_log_help',
24 'title' => '概述',
25 'content' => '<p>这里是我的插件的帮助内容。</p>',
26 ]);
27 $screen->add_help_tab([
28 'id' => 'krjojo_tool_email_log_help2',
29 'title' => '可执行操作',
30 'content' => '<p>这里是我的插件的帮助内容2。</p>',
31 ]);
32 });
33});
保存刷新便能在页面顶部看到内容了。
但如果你点进显示选项卡修改分页数,会发现数值无法保存,怎么点击都是默认数20,其实这需要另外手动实现方法保存。
wordpress提供了保存选项的实现方法。
1add_filter('set-screen-option', function ($screen_option, $option, $value) {
2 return $option === 'krjojo_tool_per_page' ? $value : $screen_option;
3}, 10, 3);
但是该方法却不能放在 add_action('admin_menu', '')
中。
需要更早调用才能运作,如 init 中。
1add_action('init', function () {
2 add_filter('set-screen-option', function ($screen_option, $option, $value) {
3 return $option === 'krjojo_tool_per_page' ? $value : $screen_option;
4 }, 10, 3);
5});
总体感觉非常诡异。
这时候保存数据,便能在数据库中 wp_usermeta
中看到保存的值了。
获取分页数方法,在表格中:
1class Krjojo_Tool_Table extends WP_List_Table
2{
3 ...
4 function prepare_items()
5 {
6 $per_page = $this->get_items_per_page('krjojo_tool_per_page');
7 }
8 ...
9}
如果要表格外获取数据,那就要判断当前是什么用户,再获取该用户的 krjojo_tool_per_page
的值。
具体代码就不演示了。
全部合在一起便是:
1add_action('init', function () {
2 add_filter('set-screen-option', function ($screen_option, $option, $value) {
3 return $option === 'krjojo_tool_per_page' ? $value : $screen_option;
4 }, 10, 3);
5});
6
7add_action('admin_menu', function () {
8 $krjojo_tool = add_submenu_page(
9 'krjojo_slug',
10 '插件完整标题',
11 '插件左标题',
12 'manage_options',
13 'krjojo_tool_slug',
14 'krjojo_tool_html'
15 );
16
17 add_action('load-' . $krjojo_tool, function () {
18
19 // 创建分页选项
20 add_screen_option('per_page', [
21 // 'label' => '每页显示',
22 'default' => 20,
23 'option' => 'krjojo_tool_per_page'
24 ]);
25
26 // 创建帮助选项卡
27 $screen = get_current_screen();
28 $screen->add_help_tab([
29 'id' => 'krjojo_tool_email_log_help',
30 'title' => '概述',
31 'content' => '<p>这里是我的插件的帮助内容。</p>',
32 ]);
33 $screen->add_help_tab([
34 'id' => 'krjojo_tool_email_log_help2',
35 'title' => '可执行操作',
36 'content' => '<p>这里是我的插件的帮助内容2。</p>',
37 ]);
38 });
39});
40
41class Krjojo_Tool_Table extends WP_List_Table
42{
43 ...
44 function prepare_items()
45 {
46 $per_page = $this->get_items_per_page('krjojo_tool_per_page');
47 }
48 ...
49}