免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
WordPress 3.0 導(dǎo)航菜單 (開發(fā)篇)

在 WordPress 導(dǎo)航菜單的使用篇中, 已經(jīng)介紹過 WP 3.0 導(dǎo)航菜單這一新功能. 在老版本的 WordPress 上, 頁面列表和分類列表一直被用作導(dǎo)航菜單, 現(xiàn)在引入該功能, 我們應(yīng)該怎樣選擇或者兼容兩者呢? 本文將更加深入, 在代碼層面繼續(xù)發(fā)掘其更多特性. 在看到這些特性之后, 或許能勾起你的一些頭緒.

關(guān)于導(dǎo)航菜單的使用方法, 請查看使用篇的介紹, 本文將側(cè)重于主題開發(fā).

用法

在主題調(diào)用導(dǎo)航菜單, 方法很簡單. 只需加入以下語句在頁面上輸出菜單.

<?php wp_nav_menu(); ?>

但其實這個方法提供了很多可配置的參數(shù), 下面我們逐一描述.

參數(shù)

參數(shù)列表來自 WordPress Codex, 下面逐一翻譯, 并對不易理解的參數(shù)進(jìn)行詳細(xì)說明.

$menu
(字符串)(可選) 期望顯示的菜單; 接受 (按順序匹配的) id, slug, name
默認(rèn)值: None

我們看一下 WordPress 取菜單的方法. 就像 Codex 上的描述一樣, 它是按 id, slug, name 的順序去取的.

function wp_get_nav_menu_object( $menu ) {	// 沒有提供參數(shù), 返回空	if ( ! $menu )		return false; 	// 根據(jù) id 找	$menu_obj = get_term( $menu, 'nav_menu' ); 	// 如果找不到, 根據(jù) slug 來找	if ( ! $menu_obj )		$menu_obj = get_term_by( 'slug', $menu, 'nav_menu' ); 	// 如果還找不到, 再根據(jù) name 來找	if ( ! $menu_obj )		$menu_obj = get_term_by( 'name', $menu, 'nav_menu' ); 	// 最終沒找到, 返回空	if ( ! $menu_obj )		$menu_obj = false; 	return $menu_obj;}

$container
(字符串)(可選) ul 父節(jié)點的標(biāo)簽類型
默認(rèn)值: div

千萬不要以為什么標(biāo)簽都可以使用, 事實上只有 div 和 nav 會被采用, 如果輸入別的值, ul 父節(jié)點的標(biāo)簽將不會顯示, 可見 Codex 的描述不夠詳盡. (從另一個角度看, WordPress 使用 nav 標(biāo)簽說明它正在提升對 HTML5 的支持力度.)

// 被允許使用的標(biāo)簽只有 div 和 nav$allowed_tags = apply_filters( 'wp_nav_menu_container_allowedtags', array( 'div', 'nav' ) );

$container_class
(字符串)(可選) ul 父節(jié)點的 class 屬性值
默認(rèn)值: menu-{menu slug}-container

$container_id
(字符串)(可選) ul 父節(jié)點的 id 屬性值
默認(rèn)值: None

$menu_class
(字符串)(可選) ul 節(jié)點的 class 屬性值
默認(rèn)值: menu

$menu_id
(字符串)(可選) ul 節(jié)點的 id 屬性值
默認(rèn)值: menu slug, 自增長的

$echo
(布爾型)(可選) 決定直接顯示菜單還是返回 HTML 片段
默認(rèn)值: true (直接顯示)

$fallback_cb
(字符串)(可選) 如果菜單不存在, 調(diào)用的回調(diào)函數(shù)
默認(rèn)值: wp_page_menu (顯示頁面列表作為菜單)

這是一個很重要的方法, 可以通過它去兼容老版本主題. 下面我們看看代碼. 關(guān)鍵是 $args 也被傳入 call_user_func 中. 例如, 我們將參數(shù) 'sort_column'=>'menu_order' 寫入 wp_nav_menu 的參數(shù), 那它同樣會被傳到 call_user_func 方法中. 如果 call_user_func 是 wp_page_menu 方法, 那么顯示的頁面列表將以認(rèn)為賦予的序號來排序輸出.

// 如果找不到指定菜單, 或者菜單不存在任何條目并沒有指定自定義菜單, 使用 call_user_func 方法來進(jìn)行處理if ( ( !$menu || is_wp_error($menu) || ( isset($menu_items) && empty($menu_items) && !$args->theme_location ) )	&& ( function_exists($args->fallback_cb) || is_callable( $args->fallback_cb ) ) )		return call_user_func( $args->fallback_cb, (array) $args );

$before
(字符串)(可選) 顯示在每個菜單鏈接前的文本
默認(rèn)值: None

$after
(字符串)(可選) 顯示在每個菜單鏈接后的文本
默認(rèn)值: None

$link_before
(字符串)(可選) 顯示在每個菜單鏈接文本前的文本
默認(rèn)值: None

$link_after
(字符串)(可選) 顯示在每個菜單鏈接文本后的文本
默認(rèn)值: None

我懷疑 Codex 對 $before 與 $link_before, $after 與 $link_after 的描述是不是倒過來了?

$depth
(整型)(可選) 顯示菜單的深度, 當(dāng)數(shù)值為 0 時顯示所有
默認(rèn)值: 0

$walker
(字符串)(可選) 自定義的遍歷對象
默認(rèn)值: None

$theme_locaton
(字符串)(可選) the location in the theme to be used--must be registered with register_nav_menu() in order to be selectable by the user
默認(rèn)值: None

如果主題在 function.php 中登記了 3 個自定義菜單, 如下:

register_nav_menus(array('primary' => 'Primary Navigation'));register_nav_menus(array('secondary' => 'Secondary Navigation'));register_nav_menus(array('bottom' => 'Bottom Navigation'));

要調(diào)用 Secondary Navigation 這個導(dǎo)航菜單, 則可以在 header.php 文件里使用以下語句:

wp_nav_menu(array(	'theme_location'	=>'secondary'));

也就是說, 這是用來指定調(diào)用某個自定義菜單的.

我準(zhǔn)備在所有發(fā)布的主題里添加對導(dǎo)航菜單的支持, 將會設(shè)計一套對老版本的兼容方案, 并以文章形式分享出來.
對于本文內(nèi)容如有任何疑問和建議, 請在此留言.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
WordPress主題制作導(dǎo)航的N種方法
wordpress彩色標(biāo)簽云設(shè)置方法
wordpress之wp_nav_menu使用說明
wordpress 代碼獲得菜單的方法
WordPress 分類目錄調(diào)用函數(shù)wp
WordPress模板標(biāo)簽之傳遞模板標(biāo)簽參數(shù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服