Сделать Wordpress-блог полностью приватным для зарегистрированных посетителей? - PullRequest
1 голос
/ 10 августа 2011

Я создаю Wordpress-сайт, на котором пользователю необходимо войти в систему, прежде чем получить доступ к самому блогу.Пока я использовал это:

add_action('wp_head','foofunc');
function foofunc() {
    if(!is_user_logged_in()) die();
}

Однако, таким образом, я не могу перенаправить пользователя на другой URL, так как вывод уже начался.Есть ли способ перенаправить незарегистрированных пользователей на URL-адрес?

Я бы использовал init, но это также перенаправляет пользователей в wp-admin.

Martti Laine

Ответы [ 4 ]

5 голосов
/ 10 августа 2011

Используйте обработчик «init» вместе с is_admin (), чтобы проверить, находится ли пользователь уже в админ-панели:

add_action('init','foofunc');
function foofunc() {
    $isLoginPage = strpos($_SERVER['REQUEST_URI'], "wp-login.php") !== false;   
    if(!is_user_logged_in() && !is_admin() &&  !$isLoginPage) {
        header( 'Location: http://yourdomain.com/login' ) ;
        die();
    }
}
2 голосов
/ 11 августа 2011

Это было готовое решение, которое сработало для нас.

http://wordpress.org/extend/plugins/more-privacy-options/

1 голос
/ 10 августа 2011
  1. Вы можете использовать плагин s2member.Он создает 4 уровня пользователя, первый уровень для свободных пользователей.Когда вы создаете страницу, вы можете выбрать требование уровня S2Member для этих страниц.
  2. http://www.rlmseo.com/blog/require-login-for-wordpress-pages/ создать шаблон для защиты паролем страницы, соответствующий формату, указанному в этой ссылке.Примените шаблон к страницам, которые вы хотите защитить паролем.
  3. Вы можете написать функцию, которая проверяет, вошел ли пользователь на страницы, используя * is_user_logged_in () *, * is_admin () * и * is_page ()* а затем перенаправляет.сделать эту функцию действием.Затем подключите это действие к init .(Я немного неясен, если init - правильный хук, но ваше перенаправление не произойдет, если какой-либо вывод был отправлен на экран)
0 голосов
/ 22 ноября 2012

Чистая реализация:

if( (!is_user_logged_in()) && ($GLOBALS['pagenow'] !== 'wp-login.php')  ) {
  wp_redirect('http://anothersite.com');
}

Может быть помещен как есть в functions.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...