2010-02-22 109 views
7

下WordPress的管理页面的页面菜单,我得到这个布局:手动突出WordPress管理菜单项

  • 编辑(网址:编辑pages.php)
  • 添加新的(url:page-new.php)
  • 特殊页(网址:编辑pages.php特殊页面=真)

,你可以看到,我也添加了特殊页新的子菜单项,这是一个很值得链接使用自定义过滤器编辑页面。由于Wordpress使用文件名来识别和突出显示子菜单项,所以无论何时点击特殊页面,编辑子菜单项都会被选中。无论如何强迫Wordpress选择特殊页面菜单项呢?

干杯

回答

3

解决方法:使用$ submenu_file变量

$ submenu_file = “?编辑pages.php特殊页面=真正的”

+0

u能请张贴关于如何使用它的一个例子吗?我无法使它工作 – bluantinoo 2011-10-06 16:41:05

5

为了进一步澄清肯武的回答,编辑全局变量$submenu_file$parent_file。如果您需要更改顶级项突出显示,$parent_file

global $submenu_file; 
$submenu_file = "edit-pages.php?special-pages=true"; 

:例如,要突出你的页面。例如,突出显示“书写”设置页面:

global $parent_file; 
global $submenu_file; 
$parent_file = 'options-general.php'; 
$submenu_file = 'options-writing.php'; 
+1

你能告诉我理想地将这些代码放在哪里吗?我无法让他们工作。 – Musa 2014-05-05 07:20:08

+0

我试图在'add_meta_boxes()'的callaback函数中实现这个功能,但是它并没有突出显示我的顶级管理菜单。 我可以补充说我没有任何子菜单,只有顶级管理菜单。 – 2014-08-18 14:20:47

+1

得到它正常工作。我会写另一个答案,让其他人更容易找到答案。 – 2014-08-18 14:39:01

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变量。

我希望这有助于!

3

更好的解决方案:

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; 
} 
+0

在我的情况下,我链接到管理分类管理页面,该分类没有附加到任何文章类型。你的代码完美无瑕。谢谢。 – wesamly 2016-01-13 14:45:54

1

为了改变OSD菜单的子菜单项,适当的过滤器是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(WordPress的4.5.3)WP的~/wp-admin/menu-header.php文件:

if (isset($submenu_file)) { 
    if ($submenu_file == $sub_item[2]) 
     $class[] = 'current'; 
... 
}