WordPress函式wp_page_menu詳解
說明
該標籤顯示帶有連結的WordPress頁面列表,並且可以選擇將 Home(主頁)自動顯示為列表中的一員。該標籤是自定義側邊欄和標題欄的好幫手,同時還可以用在其它模板中。
用法
<?php wp_page_menu( $args ); ?>
預設用法
<?php $args = array( 'depth' => 0, 'sort_column' => 'menu_order, post_title', 'menu_class' => 'menu', 'include' => '', 'exclude' => '', 'echo' => true, 'show_home' => false, 'link_before' => '', 'link_after' => '' ); ?>
預設情況下的顯示狀態:
按頁面選單順序和標題進行排列
DIV類為’menu’
迴應結果(顯示)
無link_before或link_after文字
不將“Home”新增到頁面列表中
注意:用 <ul>與</ul>標籤包圍輸出結果
引數
depth
(整數)這個引數用來控制 wp_list_pages 生成的頁面列表的層次深度。預設值為 0 (顯示所有頁面,包括所有子頁面)
0(預設)使用巢狀列表顯示所有層次的頁面
-1 – 使用單一的平面列表顯示所有層次的頁面
1 – 只顯示頂級頁面
2,3… – 顯示置頂的層次深度的頁面
sort_column
(字串)按頁面標題的字母順序排列頁面列表。預設設定為sort by menu order (按選單順序排列)與alphabetically by page title(按頁面標題的字母順序排列)。sort_column引數可被WordPress資料庫中的wp_post表中任何欄位的描述符用來排列頁面列表。下面是一些可用值。
‘post_title’ —— 按標題的字母順序排列頁面
‘menu_order’ ——按頁面順序排列頁面。注意頁面順序與頁面ID之間的區別。頁面ID是WordPress為頁面/文章指定的一個唯一數字。而頁面順序則可由用於在管理面板(如儀表盤>頁面>編輯頁面)中設定。
‘post_date’ ——按發表日期排列頁面
‘post_modified’ —— 按最後修改日期排列頁面
‘ID’ ——按頁面ID排列
‘post_author’ ——按頁面作者的ID排列頁面
‘post_name’ —— 按頁面別名的字母順序排列頁面
menu_class
(字串)用以顯示列表的DIV類。預設值為menu。
include
(字串)只顯示符合所求ID的頁面。如 wp_page_menu(‘include=2,14’) 只會列出ID為2和14的頁面。
exclude
(字串)該引數決定從列表ID列表中排除某些頁面(如 ‘exclude=3,7,31’)。無預設值。參見下文中從列表中排除若干頁面的示例。
exclude_tree
(字串)確定一列將要被排除的父頁面ID,各ID用逗號隔開。可用該引數刪除某個父頁面及其所有下屬頁面。如’exclude_tree=5’將會刪除ID為5的父頁面與該頁面的所有子頁面。(該引數引入於WP 2.7,在WP 2.8.1中使用該引數可能會有問題——詳情請見bug報告。)
echo
(布林型)顯示生成的頁面連結列表,或將列表作為HTML文字字串返回以用在PHP中。預設值為1(顯示生成的列表項)。有效值包括:
0(false)
1 (true)——預設值
show_home
(布林型)將“Home”作為頁面列表的第一個列表項。將管理面板>設定>常規中填寫的部落格地址(URL)作為這裡Home的URL連結。預設值為0(不在生成的列表中加入“Home”項)。有效值包括:
0(false)——預設值
1 (true)
<任何內容> —— 用這裡的內容代替“Home”(show_home仍然為true)
link_before
(字串)設定<a>標籤中連結文字前的文字或html。
link_after
(字串)設定<a>標籤中連結文字後的文字或html。
返回值
(字串)如果“echo”引數被設定為false,輸出選單的HTML程式碼
示例
將主頁(home)作為一個頁面
下面這個例子將“Home”作為頁面列表的第一個列表項。此外,所有頁面名稱都被div元素圍繞,不顯示ID為5,9,23的頁面,以頁面順序排列頁面。列表前有標題“Page Menu”字樣。
<h2>Page Menu</h2> <?php wp_page_menu('show_home=1&exclude=5,9,23&menu_class=page-navi&sort_column=menu_order'); ?>
將主頁作為一個頁面,並命名為Blog
下面這個例子將“Blog”(“Home”主頁的替代品)作為頁面列表的第一個列表項:
<?php wp_page_menu( array( 'show_home' => 'Blog', 'sort_column' => 'menu_order' ) ); ?>
只在頁面列表中顯示主頁
下面這個示例在頁面列表中只顯示了一個主頁(Home)連結。注意include=99999’引用了一個實際上並不存在的頁面ID,因此列表中只會顯示主頁(Home)連結。
<?php wp_page_menu('show_home=1&include=9999'); ?>
選單項的CSS類
下面的CSS類是 wp_page_menu() 生成的選單輸出的,例如HTML <li>標籤
所有選單項(Menu Items)
.page_item
這個類被新增到選單項中對應的靜態頁面
.page-item-$ID
這個類被新增到選單項中對應的靜態頁面,$ID 就是這個頁面的ID
當前頁面選單項
.current_page_item
這個類被新增到選單項中對應的當前顯示的靜態頁面
當前頁面的父級選單項
.current_page_parent
這個類被新增到選單項中對應的當前顯示的靜態頁面的父級頁面
當前頁面的祖先選單項
.current_page_ancestor
這個類被新增到選單項中對應的當前顯示的靜態頁面的祖先頁面