Wordpress 框架中的一些函數:
wp_get_nav_menu($default): 根據條件$default 獲取menu, 默認獲取所有的menu
其中 $default 默認如下所示:
$default = array( ‘theme_location’ =>'', 'menu' =>'', 'container' =>'div', 'container_class' => 'menu-{menu_slug}-container', 'container_id' =>'', 'menu_class'=>'menu', 'echo' => true, 'fallback_cb'=>'wp_page_menu', 'before' =>'', 'after' =>'', 'link_before' =>'', 'link_after' =>'', 'items_wrap' =>'<ul id=''%1s'>%3$s</ul>, 'depth' =>0, 'walker' =>'' );
參數的說明:
$theme_location: 默認為none, 指定注冊過的某一個導航菜單,若未指定,則顯示第一個。 如primary, secondary等
$menu:默認為none, 使用導航菜單的名稱調用菜單,可以使 term_id, slug, name 等屬性
$container: 默認為 div, 是ul的父節點,只支持div 和nav標簽,也可用false 去掉ul 父節點的標簽
$container_class: 默認為menu-{menu_slug}-container, 是ul 父節點的class屬性
$container_id: 默認為none , ul父節點的id
$menu_class: 默認為menu, ul節點的class屬性
$menu_id: 默認為menu slug, 自增長的ul節點的id屬性值
$echo: 默認為true 確定直接顯示導航菜單韓式返回HTML片段,如果想將導航的代碼作為膚質使用,可以設置為false.
$fallback_db: 默認值為wp_page_menu, 用於沒有在後台設置導航時調的回調函數
$items_wrap: 默認為none, 使用字符串修改替換ul的class
$depth: 默認為0, 顯示菜單的層級深度, 為0時顯示所有深度的菜單
$walker: 默認使用 new Walker_Nav_Menu(), 自定義的遍歷對象,調用一個Walker子類對象定義顯示導航菜單。
使用Walker 子類制作自定義菜單:
Walker 類是一個抽象類,該類定義了如何顯示導航等,這個抽象類包含4個屬性和6個方法:
屬性:
$tree_type , $db_fields, $max_pages, $has_children
方法:
start_lvl: 當Walker類達到結構頂層時執行該方法,可用於輸出開始元素
end_lvl: 關閉start_lvl輸出的元素標簽
start_el: 為每一個元素輸出一個開始標簽
end_el: 關閉start_el 的標簽
(核心)display_element: 定義如何顯示樹形結構中的元素
(核心)walk 根據$max_depth, 循環樹形結構中的每一個元素
如果需要自定義導航,可以直接寫一個類類繼承Walker, 但是這樣要重寫所有的方法。如果改動不大,可以直接繼承Walker_NAV_Menu類,重寫需要修改的類即可。
在重寫 display_element時, 參數$element 包含當前遍歷到的元素的所有信息, 如可以用$element->object_id 來獲取當前元素的term_id
代碼片段: 使用add_shorcode('name','function_name') 可在系統中產生一個代碼片段 ['name'], 可以在wordpress的後台文章中直接使用,或者在代碼中使用 show_shortcode['[name]']; 直接執行