WordPress как на ладони
WordPress Meetup #4. Встречаемся в Москве wordpress jino

set_theme_mod() WP 2.1.0

Создает или обновляет специальные настройки (опции) текущей темы.

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

Функции типа *_theme_mod - это аналог API настроек и нужны для единого стандарта и правильной работы с дочерними темами. Для гибкости в функциях присутствуют фильтры.

Все такие спец. опции темы физически размещаются в одной опции таблицы wp_options - theme_mods_(theme), в виде массива.

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

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

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

Впрочем все эти операции снижают скорость не значительно.

Чтобы удалить имеющуюся опцию темы, используйте remove_theme_mod().

Работает на основе: get_theme_mods(), update_option()
✈ 1 раз = 0.000983с = медленно | 50000 раз = 4.90с = быстро
Хуки из функции:
Возвращает

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

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

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

Примеры

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

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

set_theme_mod('aaa', 123);

// затем где нужно получаем эту опцию так:
get_theme_mod('aaa'); // > 123

Код set theme mod: wp-includes/theme.php VER 4.9.7

<?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 );
}

Cвязанные функции

Из метки: theme_mods (настройки опции темы)

Еще из раздела: Другие функции темы

2 коммента
  • campusboy2834 cайт: www.youtube.com/c/wpplus

    На самом деле очень крутая функция, удобная довольно-таки. Увы, я никогда её не видел в темах, хотя перелопатил их довольно большое количество.

    2
Здравствуйте, !     Войти . Зарегистрироваться