一、使用WordPress內(nèi)置函數(shù)
WordPress提供了幾個內(nèi)置函數(shù)來判斷用戶是否已登錄:
- 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; ?>
三、在插件開發(fā)中使用
開發(fā)插件時,經(jīng)常需要根據(jù)登錄狀態(tài)顯示不同正文:
add_action('wp_head', 'my_custom_login_check');
function my_custom_login_check() {
if (is_user_logged_in()) {
// 對已登錄用戶執(zhí)行操作
} else {
// 對訪客執(zhí)行操作
}
}
四、判斷特定用戶角色
有時需要結(jié)合用戶角色進行判斷:
if (is_user_logged_in()) {
$user = wp_get_current_user();
if (in_array('administrator', (array) $user->roles)) {
// 管理員已登錄
}
}
五、注意事項
- 這些函數(shù)只能在WordPress初始化完成后使用(通常在模板文件或’init’之后的鉤子中)
- 在插件中使用時,確保在適當?shù)你^子上調(diào)用
- 緩存插件可能會影響登錄狀態(tài)的判斷
六、實際應(yīng)用示例
示例1:顯示不同的導(dǎo)航菜單
if (is_user_logged_in()) {
wp_nav_menu(array('theme_location' => 'logged-in-menu'));
} else {
wp_nav_menu(array('theme_location' => 'visitor-menu'));
}
示例2:限制內(nèi)容訪問
function restrict_content() {
if (!is_user_logged_in()) {
wp_redirect(wp_login_url());
exit;
}
}
add_action('template_redirect', 'restrict_content');
通過以上方法,您可以輕松地在WordPress中判斷用戶登錄狀態(tài),并根據(jù)不同狀態(tài)顯示不同內(nèi)容或執(zhí)行不同操作。