Как отключить страницу регистрации в Multisite?

12 февр. 2013 г., 10:15:36
Просмотры: 16.6K
Голосов: 7

Если мы попытаемся получить доступ к несуществующему сайту в Multisite, например, http://site1.example.com или http://example.com/site1/, нас перенаправит на http://example.com/wp-signup.php?new=site1.

Как заблокировать это и перенаправить браузер на другую страницу?

0
Все ответы на вопрос 3
6
20

[Обновление]

Альтернативой (возможно, лучшей) является использование следующей константы в файле wp-config.php:

define( 'NOBLOGREDIRECT', 'http://example.com' );

В самом начале файла wp-signup.php находится следующий код:

function do_signup_header() {
    do_action( 'signup_header' );
}
add_action( 'wp_head', 'do_signup_header' );

Таким образом, достаточно просто добавить хук signup_header, чтобы прервать дальнейшее выполнение и перенаправить браузер на другой URL.

Вот реализация в виде Must Use Plugin:

<?php
/*
    Plugin Name: Multisite - Prevent Sign-up Page
    Plugin Url: http://wordpress.stackexchange.com/q/85529/12615
    Version: 1.0
    Author: Rodolfo Buaiz
*/

add_action( 'signup_header', 'rbz_prevent_multisite_signup' );

function rbz_prevent_multisite_signup() 
{
    wp_redirect( site_url() );
    die();
}
12 февр. 2013 г. 10:15:36
Комментарии

@kaiser, мне всегда не нравилось такое поведение в закрытых сетях ;)

brasofilo brasofilo
13 февр. 2013 г. 14:18:46

Эй, наш @kaiser, есть, по моему мнению, лучшее решение. Обновил ответ с ним. Также опубликовал связанный материал.

brasofilo brasofilo
3 мая 2013 г. 04:18:31

Я просто хотел сказать, что мне не нравится поведение ядра. Тем временем я нашел информацию о DropIns, когда говорил о них. +1 к обоим ответам.

kaiser kaiser
3 мая 2013 г. 13:12:54

Много экспериментировал с функцией для предотвращения редиректов и .htaccess, чтобы распознать */wp-signup.php и перенаправить на главную страцию сети. В итоге помогло define( 'NOBLOGREDIRECT', %URL% );! +1 (примечание: результат может быть не виден на localhost с пользовательским редиректом URL через файл hosts в Windows)

rkeet rkeet
20 окт. 2014 г. 16:42:47

Попробовал запустить это как MU-плагин, но вызывает ошибку (заголовки уже отправлены).

Ken Prince Ken Prince
8 окт. 2016 г. 20:26:18

Это неверно — нужно использовать хук before_signup_header, а не signup_header. Иначе вы получите ошибки 'Headers already sent'.

Mark Mark
30 июл. 2017 г. 11:55:44
Показать остальные 1 комментариев
1

Я нашел решение в этой статье

У меня было неправильное значение настройки SUBDOMAIN_INSTALL в моем конфигурационном файле.

30 нояб. 2014 г. 05:25:23
Комментарии

Ответ, содержащий только ссылку, станет недействительным, если ссылка перестанет работать. Не могли бы вы [отредактировать] и кратко раскрыть ваш ответ, а затем предоставить ссылку для дополнительной информации?

Mayeenul Islam Mayeenul Islam
30 нояб. 2014 г. 07:03:09
2

Просто добавьте следующий код в файл wp-content/mu-plugins/disable-signups.php:

<?php
remove_action( 'wp_head', 'do_signup_header' );

Теперь страница регистрации будет отображать:

Регистрация отключена.

7 февр. 2023 г. 09:22:19
Комментарии

зачем это делать, если регистрацию можно отключить в Настройках?

Mark Lee Mark Lee
27 нояб. 2024 г. 13:35:01

@markLee это зависит от конкретного случая, возможно, вы хотите отключить её без возможности переопределения, например, из-за политики организации.

svandragt svandragt
28 нояб. 2024 г. 15:23:42