問題描述

如何將請求特定頁面/URL 的 non-logged 使用者重定向到另一個頁面/URL,並顯示 「僅限成員」 的訊息。我知道它很容易編碼使用!is_user_logged_in() 函式,但我不知道如何編寫它,因為我是一個新手的 WordPress 。小心告訴我的檔案也放置程式碼。

最佳解決思路

這裡有兩個例子,您需要稍微修改才能滿足您的具體需求。

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('add page slug or i.d here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/page/' );
    exit;
}

把它放在你的小孩主題功能檔案中,並改變頁面 i.d /slug 和重定向網址。

你也可以使用這樣的程式碼:

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( is_page('slug') && ! is_user_logged_in() ) {

wp_redirect( 'http://www.example.dev/your-page/', 301 );
  exit;
    }
}

您可以將訊息直接新增到頁面,或者要顯示所有未登入使用者 add it to the code 的訊息。

http://codex.wordpress.org/Function_Reference/wp_redirect

次佳解決思路

如果您沒有告訴我們您想要顯示什麼和在哪裡,我們怎麼能告訴你放在哪裡?整個帖子?網頁?自定義頁面部分?對不起… 我猜今天我的水晶球不是很好。

既然你是,我引用你:「一個新手的 wordpress」 你應該學習,而不是要求直接的答案。

至於您應該閱讀參考文獻 1 連結。這將告訴你你需要放入哪個檔案。

至於如何做,你應該首先閱讀參考連結 2 和 3 。

總體來說應該是這樣的:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

當然上述程式碼需要進入迴圈。您可以將其構建為您想要的複雜或簡單。例如,而不是簡單的文字,如果沒有登入,您可以顯示整個登入檔單,例如或 – 我建議 – 使用者可以登入的分屏 (因為使用者可以有一個帳戶,但忘記登入) 或註冊 (如果他沒有) 。

  1. Template Hierarchy

  2. Conditional Tags

  3. The Loop

以下評論後新增:

要重新使用 headerwp_login_url – 再次檢查參考文獻 1 和 2 以下:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

參考:

  1. Header – PHP

  2. wp_login_url

第三種解決思路

您不能重定向到特定頁面,但每個 non-logged-in 使用者將被重定向到 Log-In 螢幕。

<?php auth_redirect(); ?>

WordPress 參考:auth_redirect()

只是提到另一個解決方案。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。