is_blog_installed() WP 2.1.0

Перевіряє, чи встановлено сайт. Перевіряється наявність опції siteurlта таблиць у базі даних. Результат кешується.

Після перевірки опції siteurl(якщо немає), функція перевірять наявність таблиць в БД. Якщо таблиці знайдені, ви побачите помилку __( 'Error establishing a database connection' ). Така ситуація може виникнути, коли таблиця опцій пошкоджена і отримати опцію siteurlнеможливо, але сайт все ж таки встановлений. Тому якщо не вдалося знайти опцію siteurl, функція перевірять наявність таблиць. Якщо жодної таблиці в БД немає, то сайт не встановлений.

Функція нічого не робить і завжди повертає true , якщо ми перебуваємо в режимі ремонту/відновлення таблиць БД .

1 раз – 0.000026 сек
(дуже швидко) | 50000 разів – 0.07 сек
(швидкість світла) |
PHP 7.0.14, WP 4.7

Хуків немає.

Повертає

true|false.

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

if( is_blog_installed() ){
	// сайт встановлений!
}

Приклади

0

#1 Перевіримо чи встановлений сайт, перед реєстрацією віджету

function widgets_init() {

	if ( ! is_blog_installed() ) {
		return;
	}

	register_widget( 'WP_Widget_Black_Studio_TinyMCE');
}

нотатки

  • Global. wpdb. $wpdb WordPress database abstraction object.

список змін

З версії 2.1.0Введено.

Код is_blog_installed() WP 6.0.2

function is_blog_installed() {
	Global $wpdb;

	/*
	 * Check cache first. If options table goes away and we have true
	 * cached, oh well.
	 */
	if ( wp_cache_get( 'is_blog_installed' ) ) {
		return true;
	}

	$suppress = $wpdb->suppress_errors();
	if ( ! wp_installing() ) {
		$alloptions = wp_load_alloptions();
	}
	// If siteurl is not set to autoload, check it specifically.
	if ( ! isset( $alloptions['siteurl'] ) ) {
		$installed = $wpdb->get_var( "SELECT option_value FROM $wpdb->options WHERE option_name = 'siteurl'" );
	} else {
		$installed = $alloptions['siteurl'];
	}
	$wpdb->suppress_errors( $suppress );

	$installed =! empty ($ installed);
	wp_cache_set( 'is_blog_installed', $installed );

	if ($installed) {
		return true;
	}

	// If visiting repair.php, return true and let it take over.
	if ( defined( 'WP_REPAIRING' ) ) {
		return true;
	}

	$suppress = $wpdb->suppress_errors();

	/*
	 * Loop over the WP tables. Якщо не існує, то викрутка налагодження є дозволеною.
	 * Якщо один або більше exist, suggest table repair since we got here because the
	 * Options table could not be accessed.
	 */
	$wp_tables = $wpdb->tables();
	foreach ( $wp_tables as $table ) {
		// The existence custom user tables shouldn't suggest an unwise state or prevent a clean installation.
		if ( defined( 'CUSTOM_USER_TABLE' ) && CUSTOM_USER_TABLE == $table ) {
			continue;
		}
		if ( defined( 'CUSTOM_USER_META_TABLE' ) && CUSTOM_USER_META_TABLE == $table ) {
			continue;
		}

		$described_table = $wpdb->get_results( "DESCRIBE $table;");
		if (
			( ! $described_table && empty( $wpdb->last_error ) ) ||
			( is_array( $described_table ) && 0 === count( $described_table ) )
		) {
			continue;
		}

		// One or more tables exist. Це не добре.

		wp_load_translations_early();

		// Die with a DB error.
		$wpdb->error = sprintf(
			/* translators: %s: Database repair URL. */
			__( 'One or more database tables are unavailable. The database може бути необхідною для <a href="%s">repaired</a>.' ),
			'maint/repair.php?referrer=is_blog_installed'
		);

		dead_db();
	}

	$wpdb->suppress_errors( $suppress );

	wp_cache_set( 'is_blog_installed', false );

	return false;
}

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

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