Intereting Posts
Как добавить новую страницу на вкладке «Страницы», которая относится к определенной теме? Как напрямую вызвать функцию короткого кода и передать $ atts Регистрация через URL Как запустить сайт WordPress через несколько ccTLD? Обязательный переключатель не проверяется в форме при нажатии на Javascript / jQuery WordPress: доступ к плагину из темы Что такое соглашения о схеме $ table_prefix Как получить отрывок страницы перед более тегом? Использование «->» на странице для запроса $ wpdb дает ошибку Как изменить поле «Калькулятор доставки» на странице «Корзина» – woocommerce? Как определить, выполняется ли запрос из виджета? Как превратить этот HTML-код в короткий код? (добавление текстов песен и предоставление идентификатора div) Worpdress не может создать каталог Пользовательская постоянная ссылка для определенной категории Внутренние ссылки на страницы в PHP?

Скрыть заголовочные тексты (Title & Tagline) в custom-header.php

В настоящее время я пытаюсь улучшить свои навыки разработки тем и еще многому научиться на php.

Я изучаю код Underscores и Twenty Seventeen . Я просто не понимаю, почему работает следующий код и что он делает, чтобы скрыть Site Title и Tagline , если флажок Display Site Title and Tagline в Customizer не установлен.

В custom-header.php после настройки пользовательского заголовка с цветом текста по умолчанию #000000 темы настраивают функцию для стиля заголовка:

 function underscores_header_style() { $header_text_color = get_header_textcolor(); /* * If no custom options for text are set, let's bail. * get_header_textcolor() options: Any hex value, 'blank' to hide text. Default: add_theme_support( 'custom-header' ). */ if ( get_theme_support( 'custom-header', 'default-text-color' ) === $header_text_color ) { return; } // If we get this far, we have custom styles. Let's do this. ?> <style type="text/css"> 

Если теперь я устанавливаю цвет текста заголовка на #000000 в Customizer, на мой взгляд, первое условие if должно стать истинным, return; должен положить конец функции, и вся следующая стилистическая часть для скрытия и за ее пределами не должна работать.

Пока что я проверил с var_dump() для get_header_textcolor() и get_theme_support('custom-header', 'default-text-color') . Оба значения равны 000000 .

В отличие от моих предыдущих соображений: все работает правильно.

Я не хочу просто «копировать – вставлять» эту проблему в свою тему, я хочу ее понять. Где моя ошибка мышления?

Solutions Collecting From Web of "Скрыть заголовочные тексты (Title & Tagline) в custom-header.php"

Прежде всего, когда вы снимите флажок « Display Site Title and Tagline в настройке, не имеет значения, какое значение вы уже вложили в Header Text Color , «customizer» сохраняет его как blank (а не пустую строку, фактический текст «пустой») ) после Save & Publish . Вы можете проверить это в таблице wp_options в базе данных после Save & Publish или попробовать var_dump() после выхода из настройки.

Поскольку get_header_textcolor() возвращает blank и get_theme_support( 'custom-header', 'default-text-color' ) возвращает 000000 , они не соответствуют указанному выше условию if , поэтому скрытие работает.

Во-вторых, вы получаете 000000 с var_dump() для get_header_textcolor() и get_theme_support( 'custom-header', 'default-text-color' ) когда вы находитесь в настройке, потому что customizer не перезагружает страницу после сохранения & it использует JavaScript для показа / скрытия Title & Tagline перед сохранением. Если вы закроете настройки после сохранения, вы увидите, что var_dump() будет показывать blank для get_header_textcolor() и 000000 для get_theme_support( 'custom-header', 'default-text-color' ) .

Это та строка, которую использует пользовательский настрой, чтобы сохранить значение как blank в файле wp-admin/js/customize-controls.js :

  control.setting.set( to ? last : 'blank' ); 

Кроме того, в функции _sanitize_header_textcolor wp-includes/class-wp-customize-manager.php файл вы увидите, что WordPress позволяет blank быть допустимым вводом для header_textcolor вместе с любым допустимым значением цвета в шестнадцатеричном формате:

  if ( 'blank' === $color ) return 'blank'; 

Итак, ваша логика была правильной, но вы ошиблись.