get_theme_mod()WP 2.1.0

Получает значение указанной опции (настройки) текущей темы.

Если указанной опции темы не существует, то второй параметр $default перед возвращением будет пропущен через функцию php sprintf() так:

$default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() );

Можно использовать совместно с set_theme_mod(), чтобы получить настройки других опций темы. Получится альтернатива API настроек, только для темы.

Работает на основе: get_theme_mods()
1 раз — 0.00212 сек (очень медленно) | 50000 раз — 0.54 сек (очень быстро) | PHP 7.4.33, WP 6.1.1
Хуки из функции

Возвращает

Разное. Значение указанной опции темы.

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

get_theme_mod( $name, $default );
$name(строка) (обязательный)

Название настройки темы, которую нужно получить. Например: 'background_color'.

Возможные значения (дополнительные значения обычно добавляются через кастомайзер):

background_color
background_image_thumb
background_position_x
background_position_y
background_size — auto, contain, cover
background_repeat — repeat-x, repeat-y, repeat, no-repeat
background_attachment
header_image
header_image_data
header_video — ID
header_text
custom_logo — ID
external_header_video — URL
nav_menu_locations — Array
header_textcolor
custom_css_post_id — ID
sidebars_widgets
$default(логический/строка)

Строка, которую нужно вернуть, если не удалось найти указанную настройку темы.

В строке можно указать плейсхолдеры. Например

Опции нет для %s %s

вернет

Опции нет для http://example.com/wp-content/themes/theme_name http://example.com/wp-content/themes/theme_name-child

По умолчанию: false

Примеры

0

#1 Цвет фона из настроек темы

Этот пример показывает, как добавить верхнюю границу для блока footer с таким же цветом как и установленный в настройках цвет фона.

Код можно вставить в начало header.php

<style>
.footer {
	 border-top: solid 1px #<?php echo get_theme_mod('background_color'); ?>;
}
</style>

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

С версии 2.1.0 Введена.

Код get_theme_mod() WP 6.7.1

function get_theme_mod( $name, $default_value = false ) {
	$mods = get_theme_mods();

	if ( isset( $mods[ $name ] ) ) {
		/**
		 * Filters the theme modification, or 'theme_mod', value.
		 *
		 * 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 2.2.0
		 *
		 * @param mixed $current_mod The value of the active theme modification.
		 */
		return apply_filters( "theme_mod_{$name}", $mods[ $name ] );
	}

	if ( is_string( $default_value ) ) {
		// Only run the replacement if an sprintf() string format pattern was found.
		if ( preg_match( '#(?<!%)%(?:\d+\$?)?s#', $default_value ) ) {
			// Remove a single trailing percent sign.
			$default_value = preg_replace( '#(?<!%)%$#', '', $default_value );
			$default_value = sprintf( $default_value, get_template_directory_uri(), get_stylesheet_directory_uri() );
		}
	}

	/** This filter is documented in wp-includes/theme.php */
	return apply_filters( "theme_mod_{$name}", $default_value );
}
2 комментария
    Войти