在Wordpress管理页面的“页面”菜单下,我得到了这个布局:
页
正如您所看到的,我添加了一个名为Special Pages的新子菜单项,它几乎是指向带有自定义过滤器的Edit页面的链接。因为Wordpress使用文件名来标识和突出显示子菜单项,所以每当我单击特殊页面时,都会选择编辑子菜单项。反正是否强迫Wordpress选择特殊页面菜单项?
干杯
答案 0 :(得分:5)
为了进一步澄清Ken Vu的答案,请编辑全局变量$submenu_file
和$parent_file
。例如,突出显示您的页面:
global $submenu_file;
$submenu_file = "edit-pages.php?special-pages=true";
如果您需要更改突出显示的顶级项目,请使用$parent_file
。例如,突出显示“写作”设置页面:
global $parent_file;
global $submenu_file;
$parent_file = 'options-general.php';
$submenu_file = 'options-writing.php';
答案 1 :(得分:5)
更好的解决方案:
add_filter('parent_file', 'my_plugin_select_submenu');
function my_plugin_select_submenu($file) {
global $plugin_page;
if ('__my-current-submenu-slug__' == $plugin_page) {
$plugin_page = '__my-submenu-slug-to-select__';
}
return $file;
}
答案 2 :(得分:3)
解决方案:使用$ submenu_file变量
$ submenu_file =“edit-pages.php?special-pages = true”
答案 3 :(得分:2)
感谢Ken Vu和Jonathan Brinley。使用您的答案,我终于突出显示了我的管理菜单,以便正常工作。当我努力工作时,我会在这里发布整个结果,所以其他人可以更容易地找到它:
我们的想法是调用parent_file
过滤器(没有记录,因为很多Wordpress部件都是不幸的)。在我的例子中,我添加了一个自定义菜单,而不是创建自定义帖子类型时生成的默认菜单。
在我的自定义邮政编码中,我调用了add_meta_boxes
操作。在这个钩子中,我发出了对parent_file
过滤器的调用:
add_filter('parent_file', array(&$this, 'highlight_admin_menu'));
_
这就是我的hightlight_admin_menu
函数的样子:
function highlight_admin_menu($some_slug){
global $parent_file;
$parent_file = 'post.php?post=149&action=edit';
return $parent_file;
}
_
这使我的菜单正确突出显示。尝试使用自己的代码来了解add_filter('parent_file', ...)
代码的发布位置。查找仅在该特定页面加载时执行的一些代码,但很快就可以修改$parent_file
变量。
我希望这有帮助!
答案 4 :(得分:1)
要更改子菜单项的突出显示的菜单项,正确的过滤器为submenu_file
。
add_filter('submenu_file', 'menuBold');
static function menuBold($submenu_file)
{
if ( checkProperPage($_GET) ) {
// The address of the link to be highlighted
return 'post-new?post_type=foobar&foo=bar';
}
// Don't change anything
return $submenu_file;
}
检查发生在第194行的WP ~/wp-admin/menu-header.php
文件中(Wordpress 4.5.3):
if ( isset( $submenu_file ) ) {
if ( $submenu_file == $sub_item[2] )
$class[] = 'current';
...
}
答案 5 :(得分:0)
您可以修改此代码以使其适合您。您可以同时更改父菜单和子菜单。经过测试的代码。
git reset --hard HEAD
答案 6 :(得分:0)
使用 load-{$page_hook}
操作挂钩并修改必要的全局变量:
/**
* For giggles, lets make an admin page that is not "in the menu" to play with.
*/
add_action('admin_menu', 'mort1305_admin_menu');
function mort1305_admin_menu() {
add_submenu_page(
NULL,
'Page Title',
'',
'administrator',
'my_slug',
'mort1305_page_content'
);
}
/**
* The menu item to highlight and the submenu item to embolden.
*/
add_action('load-admin_page_my_slug', 'mort1305_on_page_load');
function mort1305_on_page_load(){
global $plugin_file, $submenu_file, $title;
$plugin_page = 'slug-of-menu-item-to-be-highlighted';
$submenu_file = 'slug-of-submenu-item-to-be-bold';
foreach($submenu[NULL] as $submenu_arr) {
if($submenu_arr[2] === 'test_page_slug') {
$title = $submenu_arr[3];
break;
}
}
}
/**
* Page content to display.
*/
function mort_1305_page_content() {
echo This is the '. get_admin_page_title() .' page. The slug of my parent is '. get_admin_page_parent() .'.';
}