如何在functions.php中选择和编辑(添加菜单项)自定义Wordpress菜单?

时间:2014-06-04 11:35:59

标签: php wordpress login menu logout

我使用主题并在functions.php菜单中添加如下:

register_nav_menus( array(
    'primary' => __( 'Main Menu', 'theme_name' ),
    'footer' => __( 'Footer Menu', 'theme_name' )   
) );

我尝试做的是添加 - 取决于用户是否登录 - 添加登录/注销链接到页脚菜单。我在这里找到了这段代码:

add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);
function add_login_logout_link($items, $args) {
        ob_start();
        wp_loginout('index.php');
        $loginoutlink = ob_get_contents();
        ob_end_clean();
        $items .= '<li>'. $loginoutlink .'</li>';
    return $items;
}

它有效但是它将菜单项添加到所有菜单中。我也发现了这个:

add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
function add_loginout_link( $items, $args ) {
    if (is_user_logged_in() && $args->theme_location == 'primary') {
        $items .= '<li><a href="'. wp_logout_url() .'">Log Out</a></li>';
    }
    elseif (!is_user_logged_in() && $args->theme_location == 'primary') {
        $items .= '<li><a href="'. site_url('wp-login.php') .'">Log In</a></li>';
    }
    return $items;
}

也有效,但只将链接添加到主菜单(&#39; primary&#39;)。但是我如何选择我的页脚菜单或者我必须添加到注册菜单功能以使其能够使用$ args进行过滤?

2 个答案:

答案 0 :(得分:0)

我是盲人。我跳过了主要的段落 - &gt; ...和页脚 - &gt; ...

我可以简单地选择:

add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
function add_loginout_link( $items, $args ) {
    if (is_user_logged_in() && $args->theme_location == 'footer') {
        $items .= '<li><a href="'. wp_logout_url() .'">Log Out</a></li>';
    }
    elseif (!is_user_logged_in() && $args->theme_location == 'footer') {
        $items .= '<li><a href="'. site_url('wp-login.php') .'">Log In</a></li>';
    }
    return $items;
}

所以我只需要替换&#39; primary&#39;与...#footer&#39; ...傻傻的我

答案 1 :(得分:-1)

根据:

function register_main_menus() {
   register_nav_menus(
      array(
         'primary-menu' => __( 'Primary Menu' ),
         'secondary-menu' => __( 'Secondary Menu' ),
         'footer-menu' => __( 'Footer Menu' ),
      )
   );
};

您可以添加以下链接:

add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);
function add_login_logout_link($items, $args) {
    ob_start();
    wp_loginout('index.php');
    $loginoutlink = ob_get_contents();
    ob_end_clean();
    $items .= '<li>'. $loginoutlink .'</li>';
return $items;
}