當(dāng)前位置:首頁(yè)>WordPress建站>WordPress開發(fā)>將通知?dú)馀萏砑拥絎ordPress管理菜單的3種方法

將通知?dú)馀萏砑拥絎ordPress管理菜單的3種方法

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

從該屏幕截圖中可以清楚地看到,通知?dú)馀菘梢蕴砑拥阶硬藛雾?xiàng)中,不一定必須包含數(shù)字,

下面幾種方法都有一個(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é) 翻譯整理。

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
WordPress開發(fā)

WordPress默認(rèn)縮略圖尺寸和添加自定義尺寸

2019-11-25 9:36:23

WordPress開發(fā)

如何避免常見的WordPress主題開發(fā)錯(cuò)誤

2020-2-18 10:17:59

2 條回復(fù) A文章作者 M管理員
  1. 老五

    方法一那個(gè)代碼放到那個(gè)位置,如何給插件添加氣泡通知

    • 網(wǎng)站編輯

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

?
個(gè)人中心
購(gòu)物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

白玉县| 宜兰市| 陵川县| 泾川县| 大石桥市| 科尔| 楚雄市| 唐山市| 大名县| 武夷山市| 长沙县| 蕲春县| 明溪县| 饶阳县| 玉林市| 鲁甸县| 思南县| 西峡县| 策勒县| 汉沽区| 湟源县| 礼泉县| 临朐县| 宁阳县| 泸西县| 安龙县| 泽州县| 禹城市| 嘉定区| 鄢陵县| 江阴市| 伊宁市| 建昌县| 喀喇| 青海省| 将乐县| 西盟| 礼泉县| 林州市| 镇宁| 三亚市|