WordPress判断用户是否已登录的方法

来自:安企建站服务研究院

头像 方知笔记
2025年12月27日 02:37

一、使用WordPress内置函数

WordPress提供了几个内置函数来判断用户是否已登录:

  1. is_user_logged_in() - 这是最常用的方法
if (is_user_logged_in()) {
// 用户已登录
echo '欢迎回来!';
} else {
// 用户未登录
echo '请先登录';
}
  1. wp_get_current_user() - 获取当前用户对象
$current_user = wp_get_current_user();
if ($current_user->ID != 0) {
// 用户已登录
} else {
// 用户未登录
}

二、在主题文件中使用

您可以在主题的任意模板文件中使用这些判断:

<?php if (is_user_logged_in()): ?>
<div class="welcome-message">
欢迎,<?php echo wp_get_current_user()->display_name; ?>!
</div>
<?php endif; ?>

三、在插件开发中使用

开发插件时,经常需要根据登录状态显示不同正文:

add_action('wp_head', 'my_custom_login_check');
function my_custom_login_check() {
if (is_user_logged_in()) {
// 对已登录用户执行操作
} else {
// 对访客执行操作
}
}

四、判断特定用户角色

有时需要结合用户角色进行判断:

if (is_user_logged_in()) {
$user = wp_get_current_user();
if (in_array('administrator', (array) $user->roles)) {
// 管理员已登录
}
}

五、注意事项

  1. 这些函数只能在WordPress初始化完成后使用(通常在模板文件或’init’之后的钩子中)
  2. 在插件中使用时,确保在适当的钩子上调用
  3. 缓存插件可能会影响登录状态的判断

六、实际应用示例

示例1:显示不同的导航菜单

if (is_user_logged_in()) {
wp_nav_menu(array('theme_location' => 'logged-in-menu'));
} else {
wp_nav_menu(array('theme_location' => 'visitor-menu'));
}

示例2:限制内容访问

function restrict_content() {
if (!is_user_logged_in()) {
wp_redirect(wp_login_url());
exit;
}
}
add_action('template_redirect', 'restrict_content');

通过以上方法,您可以轻松地在WordPress中判断用户登录状态,并根据不同状态显示不同内容或执行不同操作。