add_option() WP 1.0.0

Додає налаштування (назву та значення опції) до Бази Даних. Нічого не робить, якщо опція вже існує.

Якщо дані потрібно серіалізувати для зберігання в БД, то вони будуть автоматично серіалізовані перед додаванням опції. Так, у налаштуваннях можна зберігати масиви.

Можна створювати опції з порожнім значенням та додавати значення пізніше.

Повертає

true|false. true – якщо вдалося додати налаштування та false – якщо ні.

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

add_option( $option, $value, $deprecated, $autoload );
$option
(рядок) (обов’язковий)

Назва опції, яку додаватимемо.

Рекомендується використовувати символ _для розділення слів і не використовувати літери у верхньому реєстрі.

$value
(рядок/масив/число/об’єкт/логічний)
Значення опції. Обмеження 2
32 байти.


За замовчуванням: ”
$deprecated
(рядок)
Застарілий з версії 2.3.


За замовчуванням: ”
$autoload
(рядок)

Автозавантаження (завантаження опції у кеш). Можливо: yesабо no.

Чи потрібно завантажувати цю опцію функцією wp_load_alloptions() (додає опцію масив опцій, при генерації сторінки, потім опція береться з масиву).
За замовчуванням: ‘yes’

Приклади

0

#1 Приклад додавання опції

Додамо налаштування my_optionзі значенням 255. Опція підвантажуватиметься автоматично з рештою, тобто. буде включено автозавантаження:

<?php add_option( 'my_option', '255'); ?>

нотатки

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

список змін

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

Код add_option() WP 6.0.2

function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
	Global $wpdb;

	if ( ! empty( $deprecated ) ) {
		_deprecated_argument( __FUNCTION__, '2.3.0');
	}

	if (is_scalar($option)) {
		$ option = trim ($ option);
	}

	if (empty($option)) {
		return false;
	}

	/*
	 * Until a proper _deprecated_option() function can be introduced,
	 * redirect requests to deprecated keys to the new, correct ones.
	 */
	$deprecated_keys = array(
		'blacklist_keys' => 'disallowed_keys',
		'comment_whitelist' => 'comment_previously_approved',
	);

	if ( ! wp_installing() && isset( $deprecated_keys[ $option ] ) ) {
		_deprecated_argument(
			__FUNCTION__,
			'5.5.0',
			sprintf(
				/* translators: 1: Deprecated option key, 2: New option key. */
				__( 'The "%1$s" option key has been renamed to "%2$s".' ),
				$option,
				$deprecated_keys[ $option ]
			)
		);
		return add_option( $deprecated_keys[ $option ], $value, $deprecated, $autoload );
	}

	wp_protect_special_option($option);

	if ( is_object( $value ) ) {
		$value = clone $value;
	}

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

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

	if ( ! is_array ( $ notoptions ) | | ! isset ( $ notoptions [ $ option ) ) ) {
		/** Цей filter is documented в wp-includes/option.php */
		if ( apply_filters( "default_option_{$option}", false, $option, false ) !== get_option( $option ) ) {
			return false;
		}
	}

	$serialized_value = maybe_serialize( $value );
	$autoload = ( 'no' === $autoload || false === $autoload ) ? 'no': 'yes';

	/**
	 * Fires before an option is added.
	 *
	 * @ Since 2.9.0
	 *
	 * @param string $option Name of the option to add.
	 * @param mixed $value Value of the option.
	 */
	do_action( 'add_option', $option, $value);

	$result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)`, $option, $serialized_value, $autoload ) );
	if ( ! $result ) {
		return false;
	}

	if ( ! wp_installing() ) {
		if ( 'yes' === $autoload ) {
			$ Alloptions = wp_load_alloptions (true);
			$alloptions[ $option ] = $serialized_value;
			wp_cache_set( 'alloptions', $alloptions, 'options' );
		} else {
			wp_cache_set($option, $serialized_value, 'options');
		}
	}

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

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

	/**
	 * Fires after a specific option has been added.
	 *
	 * The dynamic portion of hook name, `$option`, refers to the option name.
	 *
	 * @since 2.5.0 As "add_option_{$name}"
	 * @ Since 3.0.0
	 *
	 * @param string $option Name of the option to add.
	 * @param mixed $value Value of the option.
	 */
	do_action( "add_option_{$option}", $option, $value);

	/**
	 * Fires after an option has been added.
	 *
	 * @ Since 2.9.0
	 *
	 * @param string $option Name of the added option.
	 * @param mixed $value Value of the option.
	 */
	do_action( 'added_option', $option, $value);

	return true;
}

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

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