wp_get_environment_type() WP 5.5.0

Отримує поточний тип оточення: local , development , staging , production (за замовчуванням).

Ця функція стандартизує застосування різної логіки коду різного середовища розробки. Так наприклад, можна виконувати один код на локалці, інший при тестуванні і третій у продакшені.

Встановлення типу оточення

Тип оточення може бути заданий двома способами: за допомогою глобальної системної змінної WP_ENVIRONMENT_TYPE або константи з таким самим ім’ям.

putenv( 'WP_ENVIRONMENT_TYPE=development');

// або
define( 'WP_ENVIRONMENT_TYPE', 'development' );

Значення константи переписує значення системної змінної. Якщо вказано значення не зі списку вище, функція поверне тип production .

При установці типу оточення developmentвключається дебаг режимWP_DEBUG = true.

Читайте також опис функції putenv() .

1 раз – 0.000001 сек
(швидкість світла) | 50000 разів – 0.00 сек
(швидкість світла)

Хуків немає.

Повертає

Строку. Поточний тип оточення:

  • local– Локалка. З версії 5.5.1
  • development– Розробка.
  • staging– Гілка, стадія, тестування.
  • production– Робочий сайт (за замовчуванням).

Використання

wp_get_environment_type();

Приклади

0

#1 Приклад з Ядра – дефолтна установка константи WP_DEBUG

if ( ! defined( 'WP_DEBUG' ) ) {
	if ( 'development' === wp_get_environment_type() ) {
		define( 'WP_DEBUG', true );
	} else {
		define( 'WP_DEBUG', false );
	}
}
0

#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;
}
0

#3 Закриємо сайт від пошукових систем, якщо це версія сайту для розробки

/**
 * Close from search engines indexing for dev.
 *
 * @return void
 */
function kama_development_disable_indexing(){

	// do noting it's prod OR Admin
	if(
		in_array( wp_get_environment_type(), [ 'production', 'local' ], true )
		||
		current_user_can( 'administrator' )
	) {
		return;
	}

	// HTTP header
	header( 'X-Robots-Tag: noindex');

	//robots.txt
	add_filter( 'robots_txt', fn() => "User-agent: *nDisallow: /", 999);

	// <meta name='robots' content='noindex, follow' />
	add_filter( 'wp_robots', function( $robots ){
		$robots['noindex'] = true;
		$robots['nofollow'] = true;
		unset($robots['follow']);

		return $robots;
	}, 999);

	// 403 for search agents
	$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');
	}

}

Тепер просто викликає цю функцію десь у плагіні або у файлі fucntions.php:

kama_development_disable_indexing();

список змін

З версії 5.5.0Введено.
З версії 5.5.1Added the ‘local’ type.
З версії 5.5.1Повернувши здатність до іншого списку типів.

Код wp_get_environment_type() WP 6.0.2

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',
	);

	// Додати до списку неперевірених WP_ENVIRONMENT_TYPES constant.
	if ( defined( 'WP_ENVIRONMENT_TYPES' ) && function_exists( '_deprecated_argument' ) ) {
		if ( function_exists( '__' ) ) {
			/* translators: %s: WP_ENVIRONMENT_TYPES */
			$message = sprintf( __( 'The %s constant is no longer supported.' ), 'WP_ENVIRONMENT_TYPES' );
		} else {
			$message = sprintf( 'The %s constant is no longer supported.', 'WP_ENVIRONMENT_TYPES' );
		}

		_deprecated_argument(
			'define()',
			'5.5.1',
			$message
		);
	}

	// Check if the environment variable has been set, if `getenv` is available on the system.
	if ( function_exists( 'getenv' ) ) {
		$has_env = getenv( 'WP_ENVIRONMENT_TYPE' );
		if ( false !== $has_env ) {
			$current_env = $has_env;
		}
	}

	// Fetch the environment from a constant, це overrides the global system variable.
	if ( defined( 'WP_ENVIRONMENT_TYPE' ) ) {
		$current_env = WP_ENVIRONMENT_TYPE;
	}

	// Make sure the environment is an allowed one, and no accidentally set to an invalid value.
	if ( ! in_array( $current_env, $wp_environments, true ) ) {
		$current_env = 'production';
	}

	return $current_env;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *