В вашем случае functions.php
:
add_action( 'wp_loaded', function() {
global $pagenow;
if(
defined( 'IN_MAINTENANCE' )
&& IN_MAINTENANCE
&& $pagenow !== 'wp-login.php'
&& ! is_user_logged_in()
) {
header( 'HTTP/1.1 Service Unavailable', true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
header( 'Retry-After: 3600' );
if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
require_once( WP_CONTENT_DIR . '/maintenance.php' );
}
die();
}
});
Этот код будет проверять константу (см. Следующий пункт), и если пользователь не вошел в систему, загрузите файл, созданный в точке # 1, и выйдите.
Если вы хотите разрешить только пользователям с определенными возможностями, используйте current_user_can('capability_to_allow')
вместо is_user_logged_in()
. См. Кодекс для получения дополнительной информации.
Может быть, вы можете добавить maintenance.php
ссылку на страницу входа в систему; таким образом незарегистрированный пользователь может щелкнуть его, не вводя вручную URL-адрес входа в адресной строке.
Если вы используете тему, разработанную третьей стороной, используйте дочернюю тему ; таким образом вы сможете безопасно обновлять тему, не теряя своих изменений.
Если вы хотите включить режим обслуживания, откройте wp_config.php
и вставьте туда:
define('IN_MAINTENANCE', true);
После этого, когда вы будете готовы снова сделать ваш сайт общедоступным, просто удалите эту строку или измените true
на, false
чтобы упростить повторное включение.