update_option()
Оновлює значення опції (налаштування) у базі даних. Чекає не екранований рядок.
Ця функція може бути використана для того, щоб додавати нові опції замість add_option() : update_option спочатку перевіряє чи існує вказана опція, якщо ні, то робота передається add_option() . Назва опції очищається, перш ніж опція додається до бази даних.
До версії 4.2 не можна було вказати параметр $autoload . Це означає, що функції не можна було вказати, що опція, що додається, є приватною і її не над завантажувати в пам’ять разом з усіма опціями. І тому доводилося використовувати функцію add_option() (див. опис).
Важливо! За промовчанням параметр $autoload = yes для нових опцій. Тобто. при звичайному додаванні опції через цю функцію, її значення автоматично підвантажуватиметься в пам’ять. У деяких випадках це може призвести до перевантаження пам’яті, тому якщо опція потрібна для якихось рідкісних дій, важливо вказати параметр $autoload = no .
Якщо вказане значення опції дорівнює старому значенню, функція нічого не оновлює і обриває свою роботу.
Чекає не екранований рядок , тобто. функція зберігає передане значення як є, і якщо є екрановані символи, вони будуть записані як є. Тому якщо опції мають екрановані символи, значення потрібно обробити функцією wp_unslash() і потім передати фукнции.
Корисна стаття: Продуктивність опцій у WordPress
(дуже повільно) | 50000 разів – 9.96 сек
(швидко) |
PHP 7.0.5, WP 4.5.2
Хуки з функції
Повертає
true|false
. true, якщо значення змінилося і false, якщо БД нічого не змінилося або у разі помилки.
Використання
$ updated = update_option ($ option_name, $ newvalue, $ autoload);
-
$option_name
(рядок) (обов’язковий) - Назва установки, яку потрібно оновити.
-
$newvalue
(рядок|масив|число|об’єкт|логічний) (обов’язковий) - Нове значення налаштування, яке буде додано до БД.
-
$autoload
(рядок|true|false) Оновити встановлену позначку (autoload) опції. З версії 4.2.
true|yes
– при першому отриманні всіх опцій сайту, опція додається до глобального масиву опцій. Потім при зверненні до цієї опції вона береться з кешу, а не з бази даних.
false|no
– опція не завантажуватиметься з усіма опціями. При зверненні до цієї опції робитиметься окремий запит до БД.Ця мітка оновлюється під час оновлення опції.
Типово: null (yes)
Приклади
#1 Оновимо існуючу опціюmy_option
встановимо їй значення “нове значення”:
<?php update_option( 'my_option', 'нове значення' ); ?>
#2 Відновимо опцію extract_length
значенням 255.
Якщо такої опції немає, то update_option() створить її автоматично.
Зверніть увагу, що з версії 4.2 в update_option() ми можемо вказати параметр autoload, який буде оновлено, якщо опція існує і передано у функцію add_option() якщо опції не існує, і її потрібно створити…
$newvalue = '255';
update_option( 'extract_length', $newvalue, 'no');
Теж саме для версії WP нижче 4.2:
Якщо опції extract_length
ще немає, то додамо її з допомогою функції add_ooption() , у якій вкажемо, щоб опція не завантажувалася автоматично (зробимо її приватної).
$option_name = 'extract_length';
$newvalue = '255';
if ( get_option( $option_name ) != $newvalue ) {
update_option($option_name, $newvalue);
}
else {
$deprecated = '';
$autoload = 'no';
add_option( $option_name, $newvalue, $deprecated, $autoload );
}
нотатки
З версії 4.2 додався параметр $autoload.
нотатки
- Global. wpdb. $wpdb WordPress database abstraction object.
список змін
З версії 1.0.0 | Введено. |
З версії 4.2.0 | The $autoload parameter був added. |