用户登录/注销时隐藏/替换菜单项

时间:2019-02-12 14:35:59

标签: php html wordpress wordpress-theming

我希望在用户注销时能够隐藏甚至替换“我的帐户”按钮,而在用户登录时我希望能够隐藏或替换“注册”按钮。

我将如何去做?我仍然是WordPress的业余爱好者,并且仍在学习,这是我到目前为止在nav-menus.php文件中拥有的内容。

if( is_user_logged_in() ) {
    wp_nav_menu( array( 'My Account' => 'logged-users' ) );
} else {
    wp_nav_menu( array( 'Registration' => 'not-logged-users' ) );
}

我知道这是不正确的。

enter image description here

2 个答案:

答案 0 :(得分:1)

首先,您需要创建两个菜单,转到外观»菜单,创建已登录和已退出的两个菜单。

创建菜单后,将此代码添加到主题的functions.php文件或特定于站点的插件中:

function my_wp_nav_menu_args( $args = '' ) {

if( is_user_logged_in() ) { 
    $args['menu'] = 'logged-in'; //This value stands for the actual name you give to the menu when you create it.
} else { 
    $args['menu'] = 'logged-out';
} 
    return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
}

仅此而已。

答案 1 :(得分:1)

如果您只需要隐藏,那么我主要通过CSS来实现。当有登录用户时,WP将logged-in类添加到body元素中,因此您可以使用它来不同地设置body内的元素格式。

通过管理员后端将类添加到菜单项,例如hide-when-logged-inhide-when-not-logged-in

然后您就可以使用

body.logged-in .hide-when-logged-in,
body:not(logged-in) .hide-when-not-logged-in {
  display: none;
}

在样式表中隐藏相应条件下的那些元素。