Недавняя установка WordPress, тема по умолчанию. Есть три цвета, которые можно настроить из admin gui, но на веб-сайте есть по крайней мере три других цвета, которые нельзя настроить оттуда:
Я предполагаю, что можно изменить тему, чтобы эти вещи могли быть настроены из интерфейса администрирования цветов cutomize. Как мне это сделать? Если вы знаете, где я найду документы об этом или могу указать мне на файлы / функции, где это реализовано для трех уже доступных цветов, это, вероятно, также будет хорошим ответом.
Поэтому я записал весь процесс, как сам нашел ответ, надеюсь, что он кому-то полезен (предполагает базовые навыки Unix и программирования).
Поиск, где определены текущие параметры цвета:
grep -ir 'Header and Sidebar Text Color' . ./wp-content/themes/twentyfifteen/inc/customizer.php: // Add custom header and sidebar text color setting and control. ./wp-content/themes/twentyfifteen/inc/customizer.php: 'label' => __( 'Header and Sidebar Text Color', 'twentyfifteen' ), ./wp-content/themes/twentyfifteen/languages/twentyfifteen.pot:msgid "Header and Sidebar Text Color"
Так что это должно быть в wp-content / themes / twentyfifteen / inc / customizer.php, файл .pot предназначен для переводов, который хорошо иметь, но не важно прямо сейчас.
В wp-content / themes / twentyfifteen / inc / customizer.php есть комментарий, который объясняет, что в цветовых схемах есть 6 цветов:
Порядок цветов в массиве цветов:
- Основной цвет фона.
- Цвет фона боковой панели.
- Цвет фона коробки.
- Основной текст и цвет ссылок.
- Текст боковой панели и цвет ссылки.
- Цвет фона метабокса.
Ниже этого комментария есть код, который, вероятно, можно отредактировать, чтобы добавить дополнительные цветовые схемы или изменить стандартные.
Далее в файле есть следующее:
'background_color' => $color_scheme[0], 'header_background_color' => $color_scheme[1], 'box_background_color' => $color_scheme[2], 'textcolor' => $color_scheme[3], 'secondary_textcolor' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.7)', $color_textcolor_rgb ), 'border_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.1)', $color_textcolor_rgb ), 'border_focus_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.3)', $color_textcolor_rgb ), 'sidebar_textcolor' => $color_scheme[4], 'sidebar_border_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.1)', $color_sidebar_textcolor_rgb ), 'sidebar_border_focus_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.3)', $color_sidebar_textcolor_rgb ), 'secondary_sidebar_textcolor' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.7)', $color_sidebar_textcolor_rgb ), 'meta_box_background_color' => $color_scheme[5],
Это показывает, что из этих 6 переменных цветов добавляются дополнительные цвета. Это может быть изменено, чтобы настроить его непосредственно.
Теперь мне нужно выяснить, как зарегистрировать эти первые 6 цветов в системе, чтобы я мог их настроить.
Для двух из предоставленных систем код выглядит следующим образом:
// Add custom header and sidebar text color setting and control. $wp_customize->add_setting( 'sidebar_textcolor', array( 'default' => $color_scheme[4], 'sanitize_callback' => 'sanitize_hex_color', 'transport' => 'postMessage', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'sidebar_textcolor', array( 'label' => __( 'Header and Sidebar Text Color', 'twentyfifteen' ), 'description' => __( 'Applied to the header on small screens and the sidebar on wide screens.', 'twentyfifteen' ), 'section' => 'colors', ) ) );
Из этого я собираюсь:
"$color_scheme[1]" is "Header and Sidebar Background Color" "$color_scheme[4]" is "Header and Sidebar Text Color"
и я не нашел код, но, вероятно,
"$color_scheme[0]" is "Background Color"
потому что в предыдущем комментарии этот символ помечен как «Основной цвет фона».
Поэтому я попробую добавить подобную строфу для одной из других записей. Я добавил:
// Add "Box Background Color" color setting and control. $wp_customize->add_setting( 'box_background_color', array( 'default' => $color_scheme[2], 'sanitize_callback' => 'sanitize_hex_color', 'transport' => 'postMessage', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'box_background_color', array( 'label' => __( 'Box Background Color', 'twentyfifteen' ), 'description' => __( 'I don\'t know, maybe the background color of posts/pages?.', 'twentyfifteen' ), 'section' => 'colors', ) ) );
«box_background_color» и индекс $ color_scheme [] относятся к приведенному выше массиву, эта строка:
'box_background_color' => $color_scheme[2]
Метка, которую я взял из комментария, описывающего $ color_scheme [], и описание, которое я составил. Это добавляет элементы управления, но использование элементов управления не влияет. Поэтому должно быть больше кода. В wp-content / themes / twentyfifteen / inc / customizer.php я больше ничего не могу найти, поэтому я сравнил результаты
grep -ir 'box_background_color' .
для нескольких из этих цветовых переменных. Те, которые настраиваются, похоже, имеют больше обращений в wp-content / themes / twentyfifteen / js / color-scheme-control.js, чем другие, поэтому я посмотрю на этот файл:
/** * Add a listener to the Color Scheme control to update other color controls to new values/defaults. * Also trigger an update of the Color Scheme CSS when a color is changed. */
Это кажется правильным, это то, чего до сих пор не хватает. Этот файл имел записи для трех уже работающих сборщиков цветов в двух местах:
colorSettings = [ 'background_color', 'header_background_color', 'sidebar_textcolor' ];
и здесь:
// Update Background Color. api( 'background_color' ).set( colorScheme[value].colors[0] ); api.control( 'background_color' ).container.find( '.color-picker-hex' ) .data( 'data-default-color', colorScheme[value].colors[0] ) .wpColorPicker( 'defaultColor', colorScheme[value].colors[0] );
(другие два опущены)
Поэтому я добавил в массив 'box_background_color':
colorSettings = [ 'background_color', 'header_background_color', 'box_background_color', 'sidebar_textcolor' ];
и дублирует другой раздел, просто изменяя имя переменной цвета и индекс массива цветовой схемы:
// Update Box Background Color Color. api( 'box_background_color' ).set( colorScheme[value].colors[2] ); api.control( 'box_background_color' ).container.find( '.color-picker-hex' ) .data( 'data-default-color', colorScheme[value].colors[2] ) .wpColorPicker( 'defaultColor', colorScheme[value].colors[2] );
Вот и все. Работает. 🙂