set_theme_mod

Обновляет/устанавливает настройки (опции) текущей темы.

Создает или обновляет специальные настройки текущей темы. Под “специальные” подразумеваются опции вроде “background-color“, которые потом можно получить с помощью get_theme_mod().

Функции типа theme_mod – это аналог API настроек и нужны для единого стандарта и правильной работой с дочерними темами. Также, в них используются фильтры.

Все такие спец. опции темы физически размещаются в одной опции таблицы wp_options в виде массива. Т.е. код

set_theme_mod('aaa',123);
set_theme_mod('bbb',456);

разместит такой массив в опциях: array('aaa'=>123, 'bbb'=>456).

Все функции theme_mod — это обертки для get_option() и поэтому они медленнее, потому что прежде чем использовать get_option() функция получает называние темы создает из него название опции “theme_mods_$theme“, затем применяет фильтр к указанной опции. Однако все эти операции снижают скорость не значительно.

Чтобы удалить имеющуюся опцию темы, используйте remove_theme_mod().
✈ 1 раз = 0.000983с = медленно | 50000 раз = 4.90с = быстро
Хуки из функции:
pre_set_theme_mod_(name)
Возвращает

Ничего не возвращает

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

set_theme_mod( $name, $value );
$name(строка) (обязательный)
Название специальной опции темы.
$value(смешанный) (обязательный)
Значение опции.

Примеры

#1 Установим опцию темы

Установим и получи специальную настройку темы темы:

<?php
function set_theme_mod( $name, $value ) {
	$mods = get_theme_mods();
	$old_value = isset( $mods[ $name ] ) ? $mods[ $name ] : false;

	/**
	 * Filters the theme mod value on save.
	 *
	 * The dynamic portion of the hook name, `$name`, refers to the key name of
	 * the modification array. For example, 'header_textcolor', 'header_image',
	 * and so on depending on the theme options.
	 *
	 * @since 3.9.0
	 *
	 * @param string $value     The new value of the theme mod.
	 * @param string $old_value The current value of the theme mod.
	 */
	$mods[ $name ] = apply_filters( "pre_set_theme_mod_{$name}", $value, $old_value );

	$theme = get_option( 'stylesheet' );
	update_option( "theme_mods_$theme", $mods );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *