get_network_option()WP 4.4.0

Получает значение указанной опции сети (основного сайта в сети мультисайт).

Если вызывать эту функцию не в MU сборке то управление передается get_option().

Функция получает данные из кэша, если это возможно.

При установке Multisite структура опций сайтов расширяется.

В WordPress есть четыре похожие функции:

  1. get_network_option()
  2. get_site_option()
  3. get_blog_option()
  4. get_option()

Эти функции можно собрать в группы:

get_network_option() равно get_site_option()
get_blog_option() равно get_option()

Подробнее читайте в разделе: Структура сайтов и блогов.

Основа для: get_site_option()

Возвращает

Разное. Значение опции, если его удалось получить. Если указанной опции нет, то вернет false или указанное в 3-м параметре дефолтное значение.

Использование

get_network_option( $network_id, $option, $default );
$network_id(число) (обязательный)
ID сети (основного сайта, блога). Можно указать null, тогда будет использоваться ID текущей сети.
$option(строка) (обязательный)
Название опции, которую нужно получить. Ожидает «грязную» для SQL запроса строку.
$default(смешанный)
Значение, которое нужно вернуть, если опции не существует.
По умолчанию: false

Примеры

0

#1 Получим email администратора сети сайтов

$admin_email = get_network_option( null, 'admin_email' );

Эту строку можно заменить на:

$admin_email = get_site_option( 'admin_email' );

Список некоторых опций сайта сети:

Название опции Значение
site_name Мультисайт
admin_email foo@bk.ru
admin_user_id 1
registration user
upload_filetypes jpg jpeg png gif mov avi mpg 3gp 3g2 midi mid pdf doc ppt odt pptx docx pps ppsx xls xlsx key mp3 ogg wma m4a wav mp4 m4v webm ogv wmv flv
blog_upload_space 100
fileupload_maxk 1500
site_admins a:1:{i:0;s:4:"nick";}
allowedthemes a:1:{s:19:"twentysixteen-child";b:1;}
wpmu_upgrade_site 37965
welcome_email Привет, USERNAME! Ваш новый сайт в сети «SITE_NAME» успешно создан по адресу: ....
first_post Добро пожаловать на сайт %s. Это ваша первая запись. Отредактируйте или удалите её, затем пишите!
siteurl http://multiexample.com/wp/
add_new_users 1
upload_space_check_disabled 1
subdomain_install 1
global_terms_enabled 0
ms_files_rewriting 0
initial_db_version 36686
active_sitewide_plugins a:1:{s:33:"user-switching/user-switching.php";i:1473022930;}
WPLANG ru_RU
user_count 4
blog_count 3
can_compress_scripts 1
recently_activated a:1:{s:28:"democracy-poll/democracy.php";i:1473020642;}
registrationnotification yes
welcome_user_email Привет, USERNAME! Ваша учётная запись настроена. ....
menu_items a:0:{}
first_page ''
first_comment ''
first_comment_url ''
first_comment_author ''
limited_email_domains ''
banned_email_domains ''
first_comment_email ''

Заметки

  • Смотрите: get_option()
  • Global. wpdb. $wpdb WordPress database abstraction object.

Список изменений

С версии 4.4.0 Введена.

Код get_network_option() WP 6.5.2

function get_network_option( $network_id, $option, $default_value = false ) {
	global $wpdb;

	if ( $network_id && ! is_numeric( $network_id ) ) {
		return false;
	}

	$network_id = (int) $network_id;

	// Fallback to the current network if a network ID is not specified.
	if ( ! $network_id ) {
		$network_id = get_current_network_id();
	}

	/**
	 * Filters the value of an existing network option before it is retrieved.
	 *
	 * The dynamic portion of the hook name, `$option`, refers to the option name.
	 *
	 * Returning a value other than false from the filter will short-circuit retrieval
	 * and return that value instead.
	 *
	 * @since 2.9.0 As 'pre_site_option_' . $key
	 * @since 3.0.0
	 * @since 4.4.0 The `$option` parameter was added.
	 * @since 4.7.0 The `$network_id` parameter was added.
	 * @since 4.9.0 The `$default_value` parameter was added.
	 *
	 * @param mixed  $pre_option    The value to return instead of the option value. This differs from
	 *                              `$default_value`, which is used as the fallback value in the event
	 *                              the option doesn't exist elsewhere in get_network_option().
	 *                              Default false (to skip past the short-circuit).
	 * @param string $option        Option name.
	 * @param int    $network_id    ID of the network.
	 * @param mixed  $default_value The fallback value to return if the option does not exist.
	 *                              Default false.
	 */
	$pre = apply_filters( "pre_site_option_{$option}", false, $option, $network_id, $default_value );

	if ( false !== $pre ) {
		return $pre;
	}

	// Prevent non-existent options from triggering multiple queries.
	$notoptions_key = "$network_id:notoptions";
	$notoptions     = wp_cache_get( $notoptions_key, 'site-options' );

	if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {

		/**
		 * Filters the value of a specific default network option.
		 *
		 * The dynamic portion of the hook name, `$option`, refers to the option name.
		 *
		 * @since 3.4.0
		 * @since 4.4.0 The `$option` parameter was added.
		 * @since 4.7.0 The `$network_id` parameter was added.
		 *
		 * @param mixed  $default_value The value to return if the site option does not exist
		 *                              in the database.
		 * @param string $option        Option name.
		 * @param int    $network_id    ID of the network.
		 */
		return apply_filters( "default_site_option_{$option}", $default_value, $option, $network_id );
	}

	if ( ! is_multisite() ) {
		/** This filter is documented in wp-includes/option.php */
		$default_value = apply_filters( 'default_site_option_' . $option, $default_value, $option, $network_id );
		$value         = get_option( $option, $default_value );
	} else {
		$cache_key = "$network_id:$option";
		$value     = wp_cache_get( $cache_key, 'site-options' );

		if ( ! isset( $value ) || false === $value ) {
			$row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_value FROM $wpdb->sitemeta WHERE meta_key = %s AND site_id = %d", $option, $network_id ) );

			// Has to be get_row() instead of get_var() because of funkiness with 0, false, null values.
			if ( is_object( $row ) ) {
				$value = $row->meta_value;
				$value = maybe_unserialize( $value );
				wp_cache_set( $cache_key, $value, 'site-options' );
			} else {
				if ( ! is_array( $notoptions ) ) {
					$notoptions = array();
				}

				$notoptions[ $option ] = true;
				wp_cache_set( $notoptions_key, $notoptions, 'site-options' );

				/** This filter is documented in wp-includes/option.php */
				$value = apply_filters( 'default_site_option_' . $option, $default_value, $option, $network_id );
			}
		}
	}

	if ( ! is_array( $notoptions ) ) {
		$notoptions = array();
		wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
	}

	/**
	 * Filters the value of an existing network option.
	 *
	 * The dynamic portion of the hook name, `$option`, refers to the option name.
	 *
	 * @since 2.9.0 As 'site_option_' . $key
	 * @since 3.0.0
	 * @since 4.4.0 The `$option` parameter was added.
	 * @since 4.7.0 The `$network_id` parameter was added.
	 *
	 * @param mixed  $value      Value of network option.
	 * @param string $option     Option name.
	 * @param int    $network_id ID of the network.
	 */
	return apply_filters( "site_option_{$option}", $value, $option, $network_id );
}