WordPress開(kāi)發(fā)中自定義菜單的相關(guān)PHP函數(shù)使用簡(jiǎn)介
函數(shù)意義
wp_nav_menu ()
自定義菜單顯示函數(shù)
register_nav_menu ()
自定義菜單注冊(cè)函數(shù) – 單數(shù)
register_nav_menus ()
自定義菜單注冊(cè)函數(shù) – 復(fù)數(shù) (很蛋疼的一個(gè)復(fù)數(shù)形式)
以下舉例均用 register_nav_menus () 這個(gè)復(fù)數(shù)形式,以免混淆。
使用位置
register_nav_menus ()
function.php 文件中,用于注冊(cè)自定義菜單在后臺(tái)的代碼調(diào)用名稱和后臺(tái)顯示名稱。
wp_nav_menu ()
主題任意你想調(diào)用自定義菜單的位置。
使用方法
注冊(cè)4個(gè)菜單更正:3個(gè)菜單(困了,老出錯(cuò)。)
register_nav_menus( array( 'nav1' => 'n1', //nav1 為菜單名稱(調(diào)用的時(shí)候用) //n1 為顯示名稱 , 后臺(tái)選菜單的時(shí)候用 'nav2' => 'n2', 'nav3' => 'n3' ));
然后去你的后臺(tái) =》 外觀 =》 菜單 里面看下,
基本上你就明白了,
要是不明白,
那你就再看一下,嘿嘿~
主題你想要顯示自定義導(dǎo)航的位置添加以下代碼。
//調(diào)用 nav1 的菜單 <?php wp_nav_menu( array( 'theme_location' => 'nav1' ) ); ?> //調(diào)用 nav2 的菜單 <?php wp_nav_menu( array( 'theme_location' => 'nav2' ) ); ?>
然后就可以到后臺(tái)去添加一個(gè)菜單了,(名稱最好是名稱或中文。更正:最好是英文。)
你可以設(shè)定這個(gè)菜單里面顯示什么,不顯示什么,甚至可以設(shè)置導(dǎo)航的層級(jí)內(nèi)容,很方便的說(shuō)。
過(guò)濾掉自定義菜單中無(wú)用的CLASS值
在 WordPress 的自定義菜單的輸出中,菜單中每一個(gè)子元素都有一個(gè)很長(zhǎng)的 class 值,雖然從外觀上看不出什么異樣來(lái),但從代碼上看確實(shí)讓人心里很難受,其實(shí)要過(guò)濾掉這些 class 值有很多方法,今天來(lái)講一下通過(guò)掛載過(guò)濾器 (filter),去除那些我們不想要的class。
在 WordPress 3.5.0 以后的版本中將取消友情鏈接功能,并以自定義菜單功能實(shí)現(xiàn),這個(gè)是后話。
我們?cè)谳敵鲎远x菜單的時(shí)候,為了讓我們更好的控制自定義樣式, WordPress 會(huì)默認(rèn)給我們菜單的子元素輸出很多個(gè) class 的值,就像下面這樣。
<li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19">
如何過(guò)濾之,讓我們的網(wǎng)頁(yè)源代碼變得簡(jiǎn)潔、易讀呢?
在你的functions.php里面加入
function filter_nav_menu_css_class ($classes){ //想要通過(guò)的class值 $do_class_name = array('current-menu-item'); $outPut = array_intersect($do_class_name,$classes); array_filter( $classes ); return $outPut; }; add_filter('nav_menu_css_class','filter_nav_menu_css_class');
這里將 current-menu-item 這個(gè)值保留主要是為了辨別當(dāng)前頁(yè)面。
其實(shí),
還有其他方法去過(guò)濾輸出的 class 值的,
比如說(shuō)控制 Walker_Nav_Menu 這個(gè)類(lèi)來(lái)精確控制自定義菜單的輸出,
但因?yàn)楸容^麻煩所以在這里先不提,其實(shí) Walker_Nav_Menu 這個(gè)類(lèi)可以完成更多我們需要的功能。
總結(jié) – 需注意
自定義菜單式在 WordPress 3.0 后才引入的一個(gè)功能概念,有點(diǎn)類(lèi)似于之前的小工具,不過(guò)自定義菜單更傾向于導(dǎo)航用途,但因?yàn)樾鹿δ艿闹形姆g、流傳較慢,再加上這個(gè)功能只要是主題成型的愛(ài)折騰的博主一般不會(huì)在導(dǎo)航方面折騰,所以大家還一直不了解,甚至都出現(xiàn)了錯(cuò)誤教程滿天飛得局面,在這里希望有的博主在發(fā)表博文的時(shí)候不要以轉(zhuǎn)載為主,就算是轉(zhuǎn)載一些主要功能請(qǐng)具體測(cè)試一下,以免誤導(dǎo)新人。
需注意:
后臺(tái)設(shè)置中如果沒(méi)有給自定義導(dǎo)航里面設(shè)定菜單的話,那wp會(huì)為沒(méi)有設(shè)定菜單的導(dǎo)航里自動(dòng)添加所有頁(yè)面為導(dǎo)航,這是一個(gè)蛋疼的缺省,所以如果這個(gè)導(dǎo)航我們不想顯示的話,你最好能在后天設(shè)定一個(gè)空的菜單,然后給不想顯示的導(dǎo)航添加這個(gè)菜單,這樣自定義導(dǎo)航就不會(huì)顯示了。
- 在WordPress的后臺(tái)中添加頂級(jí)菜單和子菜單的函數(shù)詳解
- 在WordPress中獲取數(shù)據(jù)庫(kù)字段內(nèi)容和添加主題設(shè)置菜單
- WordPress中注冊(cè)菜單與調(diào)用菜單的方法詳解
- 以JavaScript來(lái)實(shí)現(xiàn)WordPress中的二級(jí)導(dǎo)航菜單的方法
- WordPress導(dǎo)航菜單的滾動(dòng)和淡入淡出效果的實(shí)現(xiàn)要點(diǎn)
- WordPress中制作導(dǎo)航菜單的PHP核心方法講解
- wordpress主題支持自定義菜單及修改css樣式實(shí)現(xiàn)方法
- 使用 Conditional Menus 插件讓 WordPress 在不同頁(yè)面顯示不同菜單
相關(guān)文章
關(guān)于Laravel Service Provider開(kāi)發(fā)設(shè)置延遲加載時(shí)遇到的問(wèn)題詳解
這篇文章主要給大家介紹了關(guān)于Laravel Service Provider開(kāi)發(fā)設(shè)置延遲加載時(shí)遇到的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。2018-01-01php自動(dòng)獲取字符串編碼函數(shù)mb_detect_encoding
使用 mb_detect_encoding() 函數(shù)來(lái)判斷字符串是什么編碼的。2011-05-05PHP nl2br函數(shù) 將換行字符轉(zhuǎn)成 <br>
PHP nl2br函數(shù) 將換行字符轉(zhuǎn)成 <br>,不是很了解的朋友可以參考下。2009-08-08PHP基于堆棧實(shí)現(xiàn)的高級(jí)計(jì)算器功能示例
這篇文章主要介紹了PHP基于堆棧實(shí)現(xiàn)的高級(jí)計(jì)算器功能,涉及php堆棧的定義及使用堆棧進(jìn)行數(shù)值運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09PHP實(shí)現(xiàn)導(dǎo)入大量CSV數(shù)據(jù)的示例代碼
這篇文章主要為大家詳細(xì)介紹了PHP如何實(shí)現(xiàn)導(dǎo)入大量CSV數(shù)據(jù)功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)PHP有一定幫助,需要的可以參考一下2022-07-07