WordPress 3.0 Menus

在的 WordPress 3.0 alpha 在 Appearance 裡面多了一個選項叫做 Menus. 這個選項已經出現好一陣子了,不過剛剛才心血來潮去看看是怎麼回事…

以往 WordPress 如果要做選單,通常是用 [php] <?php wp_list_pages( $args ); ?> [/php] 搭配 ul li 然後再用 CSS 去控制呈現方式。不過現在 WordPress 3.0 以後, Page 終於可以專心當 Page 了, Page 的 Title 也不用再兼任選單名稱的角色,至於產生選單的事情就交給 Menus 吧!

Menus 的選項可以是 Page, Category, 或是 Custom Link,而且在後台可以產生多個 Menu 不怕不夠用。

WordPress Menus

註冊方法:在你的 theme (例如 header.php) 裡面加入
[php]add_theme_support( ‘nav-menus’ );[/php]
這部份的程式碼如果想看詳細的判斷方法,可以從 /wp-admin/nav-menus.php 這邊往回 trace 。

呼叫方法:直接在 template 加入 (這個方法確定可以適用於 WP SVN Trunk 的 revision 13871 ) 。

實做方式:
[php]
<?
wp_nav_menu( $args );
$args = array( ‘menu’ => ”,
‘container’ => ‘div’,
‘container_class’ => ”,
‘menu_class’ => ‘menu’,
‘echo’ => true,
‘fallback_cb’ => ‘wp_page_menu’,
‘before’ => ”,
‘after’ => ”,
‘link_before’ => ”,
‘link_after’ => ”,
‘depth’ => 0,
‘walker’ => ” );
?>
[/php]

舉例而言,下面程式碼可以取回名為 roga-test 的這個 Menu (後台可以自訂 Menu 名稱),並且將 css 的 class 指定為 roga-menu

[php]
wp_nav_menu(array( ‘menu’ => ‘roga-test’, ‘menu_class’ => ‘roga-menu’));
[/php]

另外,我在 trace code 發現註解和實際接到的參數很多都不一樣(參考下圖),當然,實際可以用的參數還是以 WP Codex 那邊公佈的為主。
有時候寫程式不能太相信文件...

Posted in WordPress
3 comments on “WordPress 3.0 Menus
  1. 五月殇 says:

    WP3对CMS功能有不少增强,就是感觉越来越臃肿了。不知道会不会有很多人转向更专注博客本身的Typecho等轻量级程序。

  2. Yule says:

    注册代码添加在functions.php中,使用如下行:
    // This theme uses wp_nav_menu() in one location.
    register_nav_menus( array(‘primary’ => __( ‘Primary Navigation’, ‘twentyten’ ),) );
    通常使用add_theme_support( ‘nav-menus’ );会不正常。

    另外还要在header.php中查找
    wp_list_pages(‘sort_column=menu_order&depth=3&title_li=& exclude=’);行,替换为
    wp_nav_menu( ‘id=navbar’ );

    偶是这么干滴,很完美~~ 😀

Leave a Reply

Your email address will not be published.