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

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.000035с = очень быстро | 50000 раз = 0.58с = очень быстро | PHP 7.0.5, WP 4.5
Хуки из функции
Возвращает

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

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

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://site.ru/wp-content/themes/theme_name http://site.ru/wp-content/themes/theme_name-child

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

Примеры

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

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

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

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

Код get theme mod: wp-includes/theme.php VER 5.1.1

<?php
function get_theme_mod( $name, $default = 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 string $current_mod The value of the current theme modification.
		 */
		return apply_filters( "theme_mod_{$name}", $mods[ $name ] );
	}

	if ( is_string( $default ) ) {
		$default = sprintf( $default, get_template_directory_uri(), get_stylesheet_directory_uri() );
	}

	/** This filter is documented in wp-includes/theme.php */
	return apply_filters( "theme_mod_{$name}", $default );
}

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

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

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

2 коммента
  • Лена

    Как сделать проверку использования настройки?

    Если поле в настройках заполнено, выводить эту настройку.
    Если не заполнено выводить произвольный текст.

    Спасибо

    Ответить2 года назад #
    • campusboy3301 cайт: www.youtube.com/c/wpplus
      $background_color = get_theme_mod('background_color');
      
      if($background_color){
      	// Цвет фона указан, делаем с ним что хотим
      }else{
      	// Цвет фона Не указан, предпринимаем другие действия, к примеру подставляем цвет по умолчанию
      }
      1
      Ответить2 года назад #
Здравствуйте, !     Войти . Зарегистрироваться