子菜单中的注销超链接

时间:2014-04-25 作者:user1752759

我的网站上有以下二级导航菜单,它是使用本机的WordPress外观>菜单功能构建的:

secondary navigation menu

在我的functions.php 根据用户的访问权限,删除和添加“登录/注册”和“注销”超链接的文件:

// Add a Login hyperlink to the secondary navigation menu if the user is logged-out
function wpa_remove_menu_item( $items, $menu, $args ) {
    if( is_admin() || ! is_user_logged_in() ) return $items;

    foreach ( $items as $key => $item ) {
        if ( \'Login / Register\' == $item->title ) unset( $items[$key] );
    }

    return $items;
}

add_filter( \'wp_get_nav_menu_items\', \'wpa_remove_menu_item\', 10, 3 );


// Remove the Logout hyperlink from the secondary navigation menu when the user is logged-in
function wpa_add_menu_item( $items, $menu, $args ) {
    if( is_user_logged_in() ) return $items;

    foreach ( $items as $key => $item ) {
        if ( \'Logout\' == $item->title ) unset( $items[$key] );
    }

    return $items;
}

add_filter( \'wp_get_nav_menu_items\', \'wpa_add_menu_item\', 10, 3 );
输出如下:

enter image description here enter image description here

“注销”菜单项正在使用以下超链接:

enter image description here

如何替换此URL,以便当用户在辅助导航菜单中选择注销项目时,不会将其重定向到确认屏幕。。。

enter image description here

并且仍然位于同一层次结构中(位于“次要标题”的“我的帐户”父菜单中,而不是位于整个菜单的开头或结尾)?

enter image description here

非常感谢。

2 个回复
最合适的回答,由SO网友:Rajeev Vyas 整理而成

未测试,但可能有效,请使用wp_logout_url() wordpress内置函数以获取注销url。

// Add a Login hyperlink to the secondary navigation menu if the user is logged-out
function wpa_remove_menu_item( $items, $menu, $args ) {
    if( is_admin() || ! is_user_logged_in() ) return $items;

    foreach ( $items as $key => $item ) {
        if ( \'Login / Register\' == $item->title ) unset( $items[$key] );
        if ( \'Logout\' == $item->title ){$items[$key]->url=wp_logout_url();}
    }

    return $items;
}

add_filter( \'wp_get_nav_menu_items\', \'wpa_remove_menu_item\', 10, 3 );

SO网友:Milo

您可以通过wp_logout 作用

这里有一个示例,如果您使用的是相当长的永久链接,它将parse_query 操作,检查请求的URL是否为logout, 如果是,则注销用户并将其重定向到主页-

function wpd_logout( $query ){
    if( isset( $query->query_vars[\'pagename\'] )
    && $query->query_vars[\'pagename\'] == \'logout\' ):
        wp_logout();
        wp_redirect( home_url(\'/\') );
        exit;
    endif;
}
add_action( \'parse_query\', \'wpd_logout\' );

结束

相关推荐

Problem with custom menus

在菜单上,我说的是自定义菜单,我有一个带有几列的页脚,每列都有一个项目列表,每列菜单都需要从wp admin上的菜单选项进行更新,所以我创建了关于函数的部分。调用菜单并在页脚上添加每个菜单的php。php文档,类似于:<?php wp_nav_menu( array(\'menu\' => \'f-1\', \'menu_class\' => \'\', \'container\' => \'nav\' )); ?> <?php wp_nav_menu( arr