Wordpress is_user_logged_in() 仅适用于管理员,没有其他角色

Wordpress is_user_logged_in() only works for admins and no other Role

我制作了一个仅对登录用户显示的自定义管理栏。但我只是注意到 "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

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

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

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

问题出在 "WP Fastest Cache" 插件上。当关闭错误不再存在。