我正在构建一个WordPress插件,我想要一个无法通过子菜单访问的编辑项目页面(因为那时不会指定该项目).
此资源(http://codex.wordpress.org/Adding_Administration_Menus)显示如何将管理页面与功能相关联,但不显示如何在不将其添加为菜单项的情况下关联.
可以这样做吗?
谢谢!
小智 68
最佳解决方案http://wordpress.org/support/topic/add-backend-page-without-menu-item
使用
add_submenu_page
与母体金属块=空
Joh*_*och 20
是的,这可以做到(从技术上来说,它更像是注册整个事情,然后在以后删除菜单项),但是这将是最简单的(我认为)检查$_GET
超全局中的参数以指示用户希望编辑特定项目.
例如,您可以有一个列出要编辑的项目的页面,单击"编辑"仅将项目的ID添加到当前URL(查询字符串).
在显示此页面的功能中,如果定义了ID,请为其提供编辑该项目的页面.
否则,给他们列表视图.这就是帖子,页面和其他自定义帖子类型的用途.
小智 9
add_submenu_page with parent slug = null
要么
add_submenu_page,菜单标题= null
我终于发现了一种方法,这不是一个丑陋的黑客,不需要JS突出显示所需的菜单项(和子菜单项),并适用于插件注册的常规菜单(@Josh的答案仅适用于自定义发布类型).
基本上,您只需要正常注册子菜单,然后挂钩到'submenu_file'
过滤器以取消注册它,并可选择另外设置另一个子菜单项以突出显示.
function so3902760_wp_admin_menu() {
// Register the parent menu.
add_menu_page(
__( 'Parent title', 'textdomain' )
, __( 'Parent', 'textdomain' )
, 'manage_options'
, 'my_parent_slug'
, 'display_my_menu'
);
// Register the hidden submenu.
add_submenu_page(
'my_parent_slug' // Use the parent slug as usual.
, __( 'Page title', 'textdomain' )
, ''
, 'manage_options'
, 'my_hidden_submenu'
, 'display_my_submenu'
);
}
add_action( 'admin_menu', 'so3902760_wp_admin_menu' );
function so3902760_wp_admin_submenu_filter( $submenu_file ) {
global $plugin_page;
$hidden_submenus = array(
'my_hidden_submenu' => true,
);
// Select another submenu item to highlight (optional).
if ( $plugin_page && isset( $hidden_submenus[ $plugin_page ] ) ) {
$submenu_file = 'submenu_to_highlight';
}
// Hide the submenu.
foreach ( $hidden_submenus as $submenu => $unused ) {
remove_submenu_page( 'my_parent_slug', $submenu );
}
return $submenu_file;
}
add_filter( 'submenu_file', 'so3902760_wp_admin_submenu_filter' );
Run Code Online (Sandbox Code Playgroud)
使用此代码创建新页面而不添加菜单
add_action( 'admin_menu', 'register_newpage' );
function register_newpage(){
add_menu_page($appname, $appname, 'administrator','custompage', 'custom');
remove_menu_page('custom');
}
function custom()
{
echo "hai";
}
Run Code Online (Sandbox Code Playgroud)
注意:此解决方案不会自动设置当前菜单和子菜单项.如果要在查看隐藏页面时将特定菜单突出显示为当前菜单,请参阅我的其他答案.
从我面前的答案中,您可以看到有很多方法可以做到这一点.但是,我认为还有另一种方式可能是最好的.
基于$_GET
查询var 的值以不同方式加载页面是一种选择,但它可能不是某些人正在寻找的.
有关的建议add_submenu_page()
是正确的,但以前的每个建议都存在问题.设置$menu_title
为null
不保持菜单项不被显示,它只是使链接没有任何文本.该链接仍占用菜单中的一些空间,因此看起来很有趣.设置$parent_slug
为null
没有这个问题,但我注意到页面的HTML title
不显示$page_title
文本.
我的解决方案是设置$parent_slug
一个虚假的菜单slug,就像'i_dont_exist'
.菜单项将不会显示,并且在查看管理屏幕时,页面标题将被正确填写.
add_submenu_page(
'_doesnt_exist'
,__( 'Page title', 'textdomain' )
,''
,'manage_options'
,'menu_slug'
,'display_my_menu'
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47600 次 |
最近记录: |