有些時(shí)候,我們可能需要在WordPress后臺(tái)的管理菜單上顯示一些未讀內(nèi)容的數(shù)量通知,用來及時(shí)提示我們?nèi)ゲ榭矗ǔN覀兎Q之為通知?dú)馀荨R苍S說的不是很清楚,但是通過下面的圖片,您應(yīng)該了解我所說的:

下面幾種方法都有一個(gè)共同點(diǎn),都是使用 <span> 標(biāo)簽將一個(gè)包含特定類名的元素添加到菜單名稱的旁邊:
<span class="awaiting-mod">2</span>?– 我推薦使用這個(gè)<span class="update-plugins">11</span>
方法1.在創(chuàng)建自定義管理頁(yè)面時(shí)
$notification_count = 2; // 在這里我們以某種方式在代碼中獲得了計(jì)數(shù)
add_menu_page(
'Tickets',
$notification_count ? sprintf( 'Tickets <span class="awaiting-mod">%d</span>', $notification_count ) : 'Tickets',
'manage_options',
'tickets_page_slug',
'tickets_page_handler'
);
如果您需要翻譯字符串,可以像上面的代碼一樣使用 sprintf() 函數(shù),否則可以不用。
此方法還可以與以下函數(shù)配合使用:
add_submenu_page()add_options_page()?–該函數(shù)和以下函數(shù)在適當(dāng)?shù)母覆藛雾?xiàng)下添加一個(gè)子菜單頁(yè)面,例如,該函數(shù)本身在“設(shè)置”下添加該功能,而下面的函數(shù)可以從名稱了解具體位置。add_management_page()add_dashboard_page()add_posts_page()add_media_page()add_users_page()
讓我給您看一個(gè)例子,以使事情變得清楚。
$notification_count = 52;
add_management_page(
'My Tool Page',
'My Tool <span class="awaiting-mod">' . $notification_count . '</span>',
'manage_options',
'my_tool',
'my_tool_callback'
);
以上代碼就是在“工具”菜單下添加了一個(gè)包含氣泡通知的子菜單

方法2.在注冊(cè)自定義文章類型時(shí)
這個(gè)與register_post_type()函數(shù)及其$labels數(shù)組有關(guān)。
$count = 2;
register_post_type(
'support',
array(
'labels' => array(
'name' => 'Tickets',
// ..更多標(biāo)簽可以在這里...
'all_items' => $count ? 'All tickets <span class="awaiting-mod">' . $count . '</span>' : 'All tickets',
),
'public' => true,
// ..更多函數(shù)參數(shù)...
)
);

方法3.使用全局 $menu
建議您首先查看一下全局菜單數(shù)組的外觀。如果您的網(wǎng)站尚未正式上線,請(qǐng)嘗試以下操作:
在admin_menu掛鉤內(nèi)執(zhí)行代碼 $global $menu; print_r( $menu ); exit;

從此數(shù)組更改任何菜單項(xiàng)很容易,不是嗎?像這樣:
add_action( 'admin_menu', function() {
global $menu;
$count = 541;
$menu[2][0] = 'Dashboard <span class="awaiting-mod">' . $count. '</span>';
});
停下來!除非它是您自己的網(wǎng)站,否則請(qǐng)不要這樣做!我知道這很容易,但是菜單項(xiàng)可以根據(jù)安裝的插件和注冊(cè)的自定義文章類型來更改其位置。我們不知道某個(gè)菜單元素可以位于哪個(gè)位置。
所以,讓我們看一下 wp_list_filter() 函數(shù),該函數(shù)使我們可以輕松地從數(shù)組中找出菜單位置。
比如找到“媒體”菜單:
add_action( 'admin_menu', function() {
global $menu;
$count = 5;
$menu_item = wp_list_filter(
$menu,
array( 2 => 'upload.php' ) // 2是包含URL的數(shù)組項(xiàng)的位置,它將始終為2!
);
if ( ! empty( $menu_item ) ) {
$menu_item_position = key( $menu_item ); // 獲取元素的key(即位置)
$menu[ $menu_item_position ][0] .= ' <span class="awaiting-mod">' . $count . '</span>';
}
});
然后就可以看到正確的結(jié)果:

第三種方法不允許我們向子菜單項(xiàng)添加通知?dú)馀荨?/p>
現(xiàn)在您知道了這三種方法,并且可以根據(jù)您的需要使用最適合您的一種。
參考出處: https://rudrastyh.com/wordpress/notification-counter-bubbles.html ,由 WordPress大學(xué) 翻譯整理。





方法一那個(gè)代碼放到那個(gè)位置,如何給插件添加氣泡通知
方法一是通過 add_menu_page 函數(shù)添加自定義設(shè)置頁(yè)面的,上面的示例已經(jīng)都非常明了了,如果你都會(huì)開發(fā)插件了,這個(gè)就不需要問了吧