我正在开发我的第一个 Wordpress 插件。假设它有以下管理页面:
我不想从中显示菜单中的编辑供应商,并希望使用供应商页面中的链接使其可访问。我的菜单和供应商页面是:

生成菜单的代码:
function nes_general_settings_view () {
require_once("views/admin/general_settings.php");
}
function nes_vendor_view () {
require_once("views/admin/vendor.php");
}
function nes_vendor_new_view () {
require_once("views/admin/vendor_new.php");
}
function nes_vendor_edit_view () {
require_once("views/admin/vendor_edit.php");
}
add_action("admin_menu", function () {
add_menu_page(
"Service",
"Service",
"manage_options",
"nes_general_settings",
"nes_general_settings_view",
null,
4
);
add_submenu_page( "nes_general_settings", "General Settings", "General Settings", 0, "nes_general_settings", "nes_general_settings_view");
add_submenu_page( "nes_general_settings", "Vendors", "Vendors", 0, "nes_vendor", "nes_vendor_view");
add_submenu_page( "nes_general_settings", "New Vendor", "New Vendor", 0, "nes_vendor_new", "nes_vendor_new_view");
add_submenu_page( "nes_fake_id", "Edit Vendor", "Edit Vendor", 0, "nes_vendor_edit", "nes_vendor_edit_view");
});
Run Code Online (Sandbox Code Playgroud)
以及生成编辑供应商页面链接的代码:
<a href="<?=admin_url("admin.php?page=nes_vendor_edit")?>">Edit</a>
Run Code Online (Sandbox Code Playgroud)
但是当我在编辑供应商页面时,我的菜单没有被选中。

当我在Edit Vendor上时,如何设置Service > Vendors子菜单被选中?
小智 5
如果您的子菜单是自定义帖子类型,您可以通过将“show_in_menu”的自定义帖子类型参数设置为您在创建自定义帖子时定义的 slug,轻松地将它们定义为自定义菜单的子菜单项- 后类型。这样做将保留默认菜单打开/关闭和管理菜单中当前子菜单项的突出显示。
例如:
/* ————————————————————————— */
/* Content Types Menu Item
/* ————————————————————————— */
add_menu_page(
'Content Types',
'Content Types',
'manage_options',
'custom-content', // menu slug
'ds_create_new_submenu',
'dashicons-editor-table',
null
);
Run Code Online (Sandbox Code Playgroud)
然后在您的自定义帖子类型参数中定义 show_in_menu 以匹配菜单段。
$args = array(
'labels' => $labels,
'menu_icon' => 'dashicons-format-status',
'capability_type' => 'manage_options',
'show_in_menu' => 'custom-content'
);
Run Code Online (Sandbox Code Playgroud)
为简单起见缩短了代码示例
这必须使用 jQuery 来完成,以将适当的类添加到管理菜单中。
使用以下命令打印脚本:
# Grab the slug to print only in this screen
$hook = add_submenu_page(
null, # better than fake id
"Edit Vendor",
"Edit Vendor",
'manage_options', # IMPORTANT, don't use levels (0-9), they're deprecated
"nes_vendor_edit",
function() {
echo '<h1>nes_vendor_edit_view</h1>';
}
);
add_action( "admin_footer-$hook", function()
{
# http://stackoverflow.com/questions/5673269/what-is-the-advantage-of-using-heredoc-in-php
echo <<<HTML
<script type="text/javascript">
jQuery(document).ready( function($) {
$('#toplevel_page_nes_general_settings')
.addClass('current wp-has-current-submenu wp-menu-open');
});
</script>
HTML;
});
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
3177 次 |
| 最近记录: |