一、使用WordPress内置函数
WordPress提供了几个内置函数来判断用户是否已登录:
- is_user_logged_in() - 这是最常用的方法
if (is_user_logged_in()) {
// 用户已登录
echo '欢迎回来!';
} else {
// 用户未登录
echo '请先登录';
}
- 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)) {
// 管理员已登录
}
}
五、注意事项
- 这些函数只能在WordPress初始化完成后使用(通常在模板文件或’init’之后的钩子中)
- 在插件中使用时,确保在适当的钩子上调用
- 缓存插件可能会影响登录状态的判断
六、实际应用示例
示例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中判断用户登录状态,并根据不同状态显示不同内容或执行不同操作。