如果会话处于活动状态,则有条件地删除导航菜单链接

时间:2017-04-21 作者:sineverba

我正在开发一个插件,带有登录系统。

我需要有条件地从前端的导航菜单中删除菜单项,如果$_SESSION[\'member-user\'] 已设置。

例如,我希望“注册”链接仅在以下情况下出现$_SESSION[\'member-user\'] 未设置

我确实尝试过在抄本中搜索,但没有成功。非常感谢。

编辑:

为了解释,菜单是从wordpress网站的管理员处配置的。我需要删除我的插件链接。菜单不是从我的插件中回显的,而是从管理员中配置的(管理员将使用我的插件)。

非常感谢。

新建编辑:

我的插件的过程如下:

在“自述”中,您将阅读:

1-创建一个内有短代码[登录]的页面,并连接到菜单语音“用户”>“登录”2-创建一个内有短代码[平衡]的页面,并连接到菜单语音“用户”>“平衡”

如果用户已登录(不是wordpress用户,登录是外部的),我需要删除第一页的“登录”(或“注册”,在这种情况下不太重要)。。。

我希望现在更清楚了。。。谢谢大家!

4 个回复
SO网友:Punitkumar Patel

您可以为WordPress编写如下内容:

<?php
if ( !is_user_logged_in() ) { ?>
    <ul>
        <li><a href="login">Login</a></li>
        <li><a href="register">Register</a></li>
    </ul>
<?php } 

SO网友:Tom J Nowell

一种方法是有两个菜单,并根据用户是否登录显示不同的菜单,例如:

wp_nav_menu( array(
    \'theme_location\' => is_user_logged_in() ? \'logged-in-menu\' : \'logged-out-menu\'
) );
您可以交换is_user_logged_in() 用你自己的支票打电话

SO网友:joetek

您可以使用如下条件将输出包装到插件中:

<ul>
  <li><a href="login">Login</a></li>
  <?php if ( !$_SESSION[\'member-user\'] ) : ?>
    <li><a href="register">Register</a></li>
  <?php endif; ?>
</ul>

SO网友:JItendra Rana

当您开发插件时。您可以使用以下代码根据会话值动态添加菜单链接

function new_nav_menu_items($items) {
if(isset($_SESSION[\'member-user\'])){
    $loginlink = \'
    <li class="home"><a href="\' .get_page_link(\'YOUR_LOGIN_PAGE_ID_HERE\').\'?from=\'.$post_slug.\'">\' . __(\'Login\') . \'</a></li>
    <li class="home"><a href="\' .get_page_link(\'YOUR_REGISTER_PAGE_ID_HERE\').\'?from=\'.$post_slug.\'">\' . __(\'Register\') . \'</a></li>
    \';
    $items = $items . $loginlink;
} else {
    $accountlink = \'
    <li class="home"><a href="\' .get_page_link(\'YOUR_MY_ACCOUNT_PAGE_ID_HERE\').\'?from=\'.$post_slug.\'">\' . __(\'My Account\') . \'</a></li>
    <li class="home"><a href="\' .get_page_link(\'YOUR_LOGOUT_LINK_HERE\').\'?from=\'.$post_slug.\'">\' . __(\'Logout\') . \'</a></li>
    \';
    $items = $items . $accountlink;
}
return $items;
}
add_filter( \'wp_nav_menu_items\', \'new_nav_menu_items\' );

相关推荐