wordpress主题开发:引导用户去后台设置菜单的函数

我以前在写主题的时候曾经遇到过这样一个问题,其他作者朋友们应该也会遇到,就是wp_nav_menu默认的fallback是wp_page_menu,也就是在第一次安装主题时,如果用户没去设置菜单,会默认调用wordpress的页面列表作为菜单,这样会造成一个困扰,那就是一些用户页面太多,导致第一次使用主题时把导航界面撑的很难看,所以也看到有的作者会在主题里加上说明,希望用户启用主题后先去后台设置一个菜单,但如果遇到不认真看说明的用户怎么办呢?其实我们可以设置一个不一样的fallback,如果用户第一次启用主题并且没有设置菜单,会在导航上直接显示一个指向设置菜单页面的链接,这样既美观又实用,我曾经在mrmac主题中用到这段函数,(此丑陋的主题没有通过官方审核所以就不拿出来献丑了)把这段代码拿出来跟大家分享一下,
在模板函数中添加函数如下:

function link_to_menu_editor( $args )
{
    if ( ! current_user_can( 'manage_options' ) )
    {
        return;
    }

    extract( $args );

    $link = $link_before
        . '<a href="' .admin_url( 'nav-menus.php' ) . '">' . $before . 'Add a menu' . $after . '</a>'//此处可以改成你想要用户前往的页面地址,比如主题设置页面
        . $link_after;

    if ( FALSE !== stripos( $items_wrap, '<ul' )
        or FALSE !== stripos( $items_wrap, '<ol' )
    )
    {
        $link = "<li>$link</li>";
    }

    $output = sprintf( $items_wrap, $menu_id, $menu_class, $link );
    if ( ! empty ( $container ) )
    {
        $output  = "<$container class='$container_class' id='$container_id'>$output</$container>";
    }

    if ( $echo )
    {
        echo $output;
    }

    return $output;
}

然后在需要调用菜单的地方,将原本的<?php wp_nav_menu ; ?>改为如下函数:

<?php wp_nav_menu( array(
'theme_location' => 'primary',//调用的菜单,依据你的主题而定
'fallback_cb' => 'link_to_menu_editor' //调用link_to_menu_editor的fallback
) ); ?>

效果如下:

引导用户去后台设置菜单

13 Comments

Name *

E-mail *

Website

  1. seo培训

    哈哈 你博客真牛啊