2010-02-22 111 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'; 
... 
}