add_network_option() WP 4.4.0

Додає налаштування мережі. Використовується при мультисайті складання.

Опція не буде оновлена, якщо вона вже існує.

Якщо поточна установка звичайна (не мультисайт), управління передається add_option( $option, $value, ”, ‘no’ );

Дані зберігаються у таблиці wp_sitemeta .

Повертає

true|false. False – якщо опцію не вдалося додати. true – якщо опцію було додано.

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

add_network_option ($ network_id, $ option, $ value);
$network_id
(число) (обов’язковий)
ID мережі (ID сайту мережі). Вкажіть null, щоб працювати з поточною мережею.
$option
(рядок) (обов’язковий)
Назву опції, яку потрібно додати. Очищається для запиту SQL автоматично.
$value
(змішаний) (обов’язковий)
Значення опції. Можливо чим завгодно: рядком, числом, масивом тощо. Очищається для запиту SQL автоматично.

Приклади

0

#1 Додамо налаштування мережі для сайту 2

add_network_option( 2, 'my_option', 'значення моєї опції');

нотатки

  • Дивіться: add_option()
  • Global. wpdb. $wpdb WordPress database abstraction object.

список змін

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

код add_network_option() WP 6.0.2

function add_network_option( $network_id, $option, $value ) {
	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 не specified.
	if ( ! $network_id ) {
		$network_id = get_current_network_id();
	}

	wp_protect_special_option($option);

	/**
	 * Filters значення конкретних мережевих опцій перед тим, як це added.
	 *
	 * The dynamic portion of hook name, `$option`, refers to the option name.
	 *
	 * @ since 2.9.0 As 'pre_add_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.
	 */
	$value = apply_filters( "pre_add_site_option_{$option}", $value, $option, $network_id );

	$notoptions_key = "$network_id:notoptions";

	if ( ! is_multisite() ) {
		$result = add_option( $option, $value, '', 'no' );
	} else {
		$cache_key = "$network_id:$option";

		// Make sure the option doesn't already exist.
		// We can check the 'notoptions' cache before we ask for a DB query.
		$notoptions = wp_cache_get( $notoptions_key, 'site-options');

		if ( ! is_array ( $ notoptions ) | | ! isset ( $ notoptions [ $ option ) ) ) {
			if ( false !== get_network_option( $network_id, $option, false ) ) {
				return false;
			}
		}

		$ value = sanitize_option ($ option, $ value);

		$serialized_value = maybe_serialize( $value );
		$result = $wpdb->insert(
			$wpdb->sitemeta,
			array(
				'site_id' => $network_id,
				'meta_key' => $option,
				'meta_value' => $serialized_value,
			)
		);

		if ( ! $result ) {
			return false;
		}

		wp_cache_set($cache_key, $value, 'site-options');

		// Ця option exists now.
		$notoptions = wp_cache_get( $notoptions_key, 'site-options'); // Yes, again... we need it to be fresh.

		if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
			unset($notoptions[$option]);
			wp_cache_set($notoptions_key, $notoptions, 'site-options');
		}
	}

	if ($result) {

		/**
		 * Fires after a specific network option has been successfully added.
		 *
		 * The dynamic portion of hook name, `$option`, refers to the option name.
		 *
		 * @since 2.9.0 As "add_site_option_{$key}"
		 * @ Since 3.0.0
		 * @since 4.7.0 The `$network_id` parameter was added.
		 *
		 * @param string $option Name of the network option.
		 * @param mixed $value Value of the network option.
		 * @param int $network_id ID of the network.
		 */
		do_action( "add_site_option_{$option}", $option, $value, $network_id );

		/**
		 * Fires after a network option has been successfully added.
		 *
		 * @ Since 3.0.0
		 * @since 4.7.0 The `$network_id` parameter was added.
		 *
		 * @param string $option Name of the network option.
		 * @param mixed $value Value of the network option.
		 * @param int $network_id ID of the network.
		 */
		do_action( 'add_site_option', $option, $value, $network_id);

		return true;
	}

	return false;
}

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

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