Работа с опциями в WordPress

В этой заметке я кратко опишу процесс создания, редактирования и изменения и удаления опций в WordPress. Изначально потребность работы с опциями в WordPress у меня возникла в процессе написания функции для минификации содержимого файлов CSS. Чтобы не выполнять постоянно одну и туже операцию, нужно было хранить в базе WordPress хэш искомого файла стилей.

Создать новую опцию

Для создания опции в WordPress используется функция add_option(). После первого выполнения функция создает в базе WordPress новую запись, которую WordPress будет использовать для хранения настроек. Если опция с указанным именем уже существует, то в процессе вызова функции ничего не произойдет.

Синтаксис использования функции add_option():

add_option($name, $value = '', $deprecated = '', $autoload = 'yes');

Описание параметров:

  • $name — название опции, которая будет добавлена. Используйте слова в нижнем регистре, вместо пробела используйте нижнее подчеркивание.
  • $value — значение опции.  Может быть пустым.
  • $deprecated - текст описывающий опцию. Параметр больше не используется. Оставляем значение пустым.
  • $autoload — должна ли опция загружаться автоматически функцией wp_load_alloptions. Использует значения: yes или no.

Пример использования функции для добавления новой опции в WordPress:

add_option("my_option_name", '123', '', 'yes');

Необходимо отметить, что описание опций больше не используется в WordPress, поэтому, третий параметр всегда указывается пустым.

Получить значение опции

Когда новая опция создана в базе WordPress, ее значение можно получить с помощью функции get_option(). Если в MySQL опция с указанным именем не существует, функция вернет FALSE.

Синтаксис использования функции get_option():

get_option($name, $default);

Описание параметров:

  • $name — название опции, значение которой необходимо получить.
  • $value — значение по умолчанию, если никакого значения не вернулось.

Обновить значение опции

Как правило, функцию update_option() используют для изменения существующих опций в WordPress. Но эту функцию можно использовать и для создания новой опции. В этом случае update_option() проверяет наличие опции с указанным именем в базе данных. В случае ее отсутствия, будет автоматически вызвана функция add_option().

update_option($name, $newvalue);

Описание параметров:

  • $name — название опции, значение которой необходимо изменить.
  • $newvalue — новое значение для опции.

Пример использования функции для изменения значения опции в WordPress:

$option_name = 'my_option'; 
$newvalue = '123';
if ( get_option($option_name) ) {
    update_option($option_name, $newvalue);
}

Связи с тем, что при отсутствии опции с указным именем функция update_option() создает новую запись в базе, перед ее использованием рекомендуется выполнить проверку наличия опции.

Удалить опцию из базы WordPress

Чтобы удалить опцию из таблицы options в базе данных WordPress необходимо использовать функцию delete_option().

Синтаксис использования функции delete_option():

delete_option( $name );
  • $name — название опции, которая будет удалена.

Пример использования функции для удаления одной или нескольких опций в WordPress:

// Описание функции
function deleteOptions()
{
        // Массив с названиями опций
	$args = func_get_args();
	$num = count($args);
        
        // Удаление одной опции
	if ($num == 1) {
		return (delete_option($args[0]) ? TRUE : FALSE);
	}
        // Удаление группы опций
	elseif (count($args) > 1)
	{
		foreach ($args as $option) {
			if ( ! delete_option($option))
				return FALSE;
		}
		return TRUE;
	}
	return FALSE;
}

// Вызов функции deleteOptions
if (deleteOptions('is_installed', 'my_plugin_version', 'my_option'))
   echo 'Опции были удалены!';
else
   echo 'Ошибка в процессе удаления!';