Как сделать блог wordpress полностью невидимым для публики [Not Private]

Я хочу закрыть блог wordpress, который у меня есть, от публики и оставить его только для себя.

Я знаю, что могу сделать его закрытым, но он показывает уродливую страницу входа в систему, и я не хочу, чтобы люди пытались получить к ней доступ (используя случайные имена пользователей / пароль и т. д.) или думали, что она все еще открыта, но для участников с учетными записями или что-то в этом роде. .

Я хотел бы, чтобы блог указывал на «сервер не найден» для публики, и когда я вхожу в систему как администратор, я могу видеть свои сообщения и серверную часть, а также внешний интерфейс.

Как я могу сделать это возможным?


person Jack Stanson    schedule 19.03.2014    source источник


Ответы (2)


Мое предложение будет следующим:

function is_login_page() {
    return in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) );
}

function wpse_make_blog_private() {
    if ( ! is_user_logged_in() && ! is_admin() && ! is_login_page() ) { 
        global $wp_query;
        $wp_query->set_404();
    }
}
add_action( 'wp', 'wpse_make_blog_private' );

Он будет показывать 404 на всех страницах, но по-прежнему позволит вам войти в систему. Вошедшие в систему пользователи будут видеть сайт как обычно.

На ваш запрос, чтобы показать полностью сломанный сайт, добавьте следующий код в functions.php. Имейте в виду, что это вместо кода выше.

function is_login_page() {
    return in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) );
}

function wpse_make_blog_private() {
    if ( ! is_user_logged_in() && ! is_admin() && ! is_login_page() ) { 
        die();
    }
}
add_action( 'wp', 'wpse_make_blog_private' );

Вместо этого у вас есть возможность использовать wp_die, чтобы добавить сообщение об ошибке с минимальным стилем. См.: https://codex.wordpress.org/Function_Reference/wp_die.

person Nathan Dawson    schedule 19.03.2014
comment
Спасибо за ответ, НАтан, где я должен поместить это в header.php index.php? Я предполагаю, что подход к этому состоит в том, чтобы сделать его частным блогом и использовать приведенный выше код? Когда кто-то не вошел в систему, выдаст ли ему страницу 404, например, когда сайта не существует, или внутренний 404, использующий шаблон веб-сайта и отображающий 404? - person Jack Stanson; 20.03.2014
comment
Поместите его в functions.php. Да, это именно то, что он делает. - person Nathan Dawson; 20.03.2014
comment
Произошла странная вещь, я попытался найти, что я хотел бы, чтобы мой блог был виден только пользователям, которых я выбираю в параметрах чтения в wordpress, прежде чем я использую приведенный выше код, и его там нет. Есть идеи, что я могу сделать? (Я использую последнюю версию wordpress 3.8.1) - person Jack Stanson; 20.03.2014
comment
Первый раз слышу о таком варианте. - person Nathan Dawson; 20.03.2014
comment
Я не могу найти способ сделать его приватным, обычно я могу зайти в «Чтение» => Сделать этот блог приватным (что-то вроде этого в опции блокировки поисковых систем) - person Jack Stanson; 20.03.2014
comment
Это что-то совсем другое. Все, что вы делаете, это мешает поисковым системам индексировать сайт. - person Nathan Dawson; 20.03.2014
comment
Как я могу сделать его приватным? Я пытался следовать этому руководству: en.support.wordpress. com/settings/privacy-settings/ Но у меня нет опции. Я бы хотел, чтобы мой блог был виден только пользователям, которых я выбираю. Когда я использую приведенный выше код, он отображает шаблон и весь сайт с сообщением о сообщении 404. можно ли сделать его полностью пустым, как сломанный сайт или удаленный сайт? - person Jack Stanson; 20.03.2014

Я предлагаю вам обернуть весь код, который вы хотите видеть вошедшим в систему пользователям, внутри следующей проверки:

if ( is_user_logged_in() ) { 
    // do stuff for logged in users
} else {
    // do stuff for guests / users that are not logged in
}
person benomatis    schedule 19.03.2014
comment
Должен ли я разместить это в header.php или в index.php? Я хочу, чтобы весь сайт не был найден, если я не вошел в систему. - person Jack Stanson; 20.03.2014
comment
Это должно охватывать ваш контент, независимо от того, что вы хотите показать/скрыть. - person benomatis; 20.03.2014