WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика

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 сек (быстро)
Хуки из функции
Возвращает

true/false. В зависимости от того было или нет обновлено значение опции. см. update_option(). Возвращаемое значение добавлено в WP 5.6.

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

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

Примеры

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

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

set_theme_mod('aaa', 123);

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

Список изменений

С версии 2.1.0 Введена.
С версии 5.6.0 A return value was added.

Код set_theme_mod() WP 5.6.2

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

	/**
	 * Filters the theme modification, or '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 modification.
	 * @param string $old_value The current value of the theme modification.
	 */
	$mods[ $name ] = apply_filters( "pre_set_theme_mod_{$name}", $value, $old_value );

	$theme = get_option( 'stylesheet' );

	return update_option( "theme_mods_$theme", $mods );
}

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

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

2 коммента
    Войти