# WP_GET_ENVIRONMENT_TYPE() │ WP 5.5.0
Функция WP_GET_ENVIRONMENT_TYPE() позволяет получить текущий тип среды, в которой работает ваш сайт на WordPress. Это может быть полезно при разработке, тестировании и на этапе запуска.
## Что такое тип среды?
Тип среды — это категория, которая определяет, в каком режиме работает ваш сайт. Существует несколько типов среды:
- **local** — локальная среда (например, когда вы рабо��аете на своем компьютере).
- **development** — среда разработки (например, тестовая версия сайта).
- **staging** — промежуточная среда (например, тестовая версия перед запуском).
- **production** — рабочая среда (окончательная версия сайта, доступная для пользователей).
Если тип не установлен, по умолчанию используется значение **production**.
## Использование функции
Для получения текущего типа среды вы можете использовать следующую функцию:
```php
wp_get_environment_type();
Возвращаемое значение
Функция возвращает строку, которая указывает текущий тип среды.
Примеры использования
Пример 1: Установка WP_DEBUG на основе типа среды
Следующий код устанавливает значение WP_DEBUG, в зависимости от текущей среды:
if ( ! defined( 'WP_DEBUG' ) ) {
if ( 'development' === wp_get_environment_type() ) {
define( 'WP_DEBUG', true );
} else {
define( 'WP_DEBUG', false );
}
}
Пример 2: Разные действия в зависимости от типа среды
Этот пример демонстрирует, как выполнять разные действия в зависимости от типа среды:
switch ( wp_get_environment_type() ) {
case 'local':
case 'development':
do_nothing();
break;
case 'staging':
do_staging_thing();
break;
case 'production':
default:
do_production_thing();
break;
}
Пример 3: Закрытие сайта от индексации в поисковых системах
Если ваш сайт находится в стадии разработки, можно отключить индексацию его поисковыми системами. Вот как это сделать:
/**
* Закрывает сайт от индексации поисковыми системами в режиме разработки.
*
* @return void
*/
function kama_development_disable_indexing(){
// Если это рабочая версия или администратор
if( in_array( wp_get_environment_type(), ['production', 'local'], true) || current_user_can( 'administrator' ) ){
return;
}
// Установка HTTP заголовка
header( 'X-Robots-Tag: noindex' );
// robots.txt
add_filter( 'robots_txt', fn() => "User-agent: *nDisallow: /", 999 );
//
add_filter( 'wp_robots', function( $robots ){
$robots['noindex'] = true;
$robots['nofollow'] = true;
unset( $robots['follow'] );
return $robots;
}, 999 );
// Ответ 403 для поисковых агентов
$robots = 'libwww|Wget|LWP|damnBot|BBBike|spider|crawl|google|bing|yandex|msnbot';
if( preg_match( "/$robots/i", $_SERVER['HTTP_USER_AGENT'] ) ) {
http_response_code( 403 );
die( 'Public Forbidden' );
}
}
Этот код можно вызвать в своем плагине или в файле functions.php:
kama_development_disable_indexing();
Изменения с версии 5.5.0
- 5.5.0 — Введена функция.
- 5.5.1 — Добавлен тип 'local'.
- 5.5.1 — Убрана возможность изменять список типов.
Код функции
Вот код, который используется в функции wp_get_environment_type():
function wp_get_environment_type() {
static $current_env = '';
if ( ! defined( 'WP_RUN_CORE_TESTS' ) && $current_env ) {
return $current_env;
}
$wp_environments = array('local', 'development', 'staging', 'production');
if (defined('WP_ENVIRONMENT_TYPES') && function_exists('_deprecated_argument')) {
$message = sprintf( 'Константа %s больше не поддерживается.', 'WP_ENVIRONMENT_TYPES' );
_deprecated_argument('define()', '5.5.1', $message);
}
if (function_exists('getenv')) {
$has_env = getenv('WP_ENVIRONMENT_TYPE');
if (false !== $has_env) {
$current_env = $has_env;
}
}
if (defined('WP_ENVIRONMENT_TYPE') && WP_ENVIRONMENT_TYPE) {
$current_env = WP_ENVIRONMENT_TYPE;
}
if (!in_array($current_env, $wp_environments, true)) {
$current_env = 'production';
}
return $current_env;
}
Теперь вы знаете, как использовать и интегрировать функцию WP_GET_ENVIRONMENT_TYPE() в ваш WordPress проект!