首页 > 解决方案 > Wordpress is_user_logged_in() 仅适用于管理员,不适用于其他角色

问题描述

我制作了一个仅对登录用户显示的自定义管理栏。但我刚刚注意到,使用“is_user_logged_in()”函数,它仅适用于管理员,不适用于贡献者或观众。

该代码适用于特定几页中的贡献者和观众。我相信这可能是因为这些页面有一些代码可以检查用户是否登录。但我不知道。

这是我的 PHP 和 HTML 代码:

<?php if ( is_user_logged_in() ) : ?>
    <a href="<?php global $current_user; echo home_url() . '/members/' . $current_user->user_login . '/profile/'; ?>">My profile</a>
    <a class="screen-reader-shortcut" href="<?php echo esc_url( wp_logout_url() ); ?>"><?php _e('Log out'); ?></a>
<?php else: ?>
    <span>Become a member</span>
    <a href="/wp-login.php">Log in</a>
    <a class="cta-small" href="/register">Get invitation</a>
<?php endif; ?>

任何想法为什么它不起作用?

我使用 Wordpress 5.2.1 和 PHP 7.2

标签: phpwordpressloginroles

解决方案


有时 is_user_logged_in() 函数在模板重定向上表现异常。

尝试使用不同的条件,将第一行替换为:

<?php if ( get_current_user_id() != 0 ) : ?>

推荐阅读