API предварительного просмотра темы настраиваемого интерфейса

Вопрос или проблема

У меня есть некоторые проблемы с тем, чтобы текст, который я ввожу в поле, появлялся на странице во время набора (живой предварительный просмотр).

Когда я нажимаю сохранить и обновить, изменения сохраняются, но по какой-то причине они не появляются в процессе набора. Есть идеи, почему живой предварительный просмотр может не работать? Я верю, что делаю все правильно.

functions.php

<?php

function tcx_register_theme_customizer( $wp_customize ) {

  $wp_customize->add_section(
    'tcx_notification_options',
    array(
      'title'     => 'Панель уведомлений',
      'priority'  => 201
    )
  );

  $wp_customize->add_setting(
  'tcx_notification_text',
    array(
      'default'            => 'Бесплатная международная доставка на заказы свыше £100',
      'sanitize_callback'  => 'tcx_sanitize_notification_text',
      'transport'          => 'postMessage'
    )
  );

  $wp_customize->add_control(
  'tcx_notification_text',
    array(
      'section'  => 'tcx_notification_options',
      'label'    => 'Текст уведомления',
      'type'     => 'text'
    )
  );

add_action( 'customize_register', 'tcx_register_theme_customizer' );

function tcx_sanitize_notification_text( $input ) {
  return strip_tags( stripslashes( $input ) );
}

function tcx_customizer_live_preview() {
  wp_enqueue_script(
    'tcx-theme-customizer',
    get_template_directory_uri() . '/library/js/theme-customizer.js',
    array( 'jquery', 'customize-preview' ),
    '1.0.0',
    true
  );
}

add_action( 'customize_preview_init', 'tcx_customizer_live_preview' );

theme-customizer.js

(function( $ ) {
  "use strict";

  wp.customize('tcx_notification_text', function(value) {
    value.bind(function(to) {
      $('.notification-title').text(to);
    });
  });

})( jQuery );

header.php

<strong class="notification-title"><?php echo get_theme_mod( 'tcx_notification_text' ); ?></strong>

Я знаю, что это старая запись, но на случай, если вы все еще ищете ответ:

Добавьте эту строку в вашу функцию tcx_register_theme_customizer:

$wp_customize->get_setting( 'tcx_notification_text' )->transport="postMessage";

Это получает значение из поля и передает его в Javascript для отображения в живом предварительном просмотре.

Ответ или решение

Живая Предпросмотр в API Настройщика Тем (Theme Customizer API Live Preview)

Если вы столкнулись с проблемой невозможности видеть изменения в реальном времени при вводе текста в поле ввода в настройках вашей темы WordPress, это может быть связано с несколькими распространёнными аспектами, которые стоит проверить.

1. Проверьте конфигурацию настроек

В предоставленном вами коде функции, используемой для регистрации настроек в functions.php, обратите внимание на то, что вы правильно установили параметры для transport. Ваша установка выглядит следующим образом:

$wp_customize->add_setting(
  'tcx_notification_text',
  array(
    'default'            => 'Free International Shipping on Orders Over £100',
    'sanitize_callback'  => 'tcx_sanitize_notification_text',
    'transport'          => 'postMessage' // Убедитесь, что это правильно
  )
);

Хорошая практика заключается в том, чтобы удостовериться, что параметр transport действительно установлен в postMessage. Ваш код выглядит корректным, но чтобы гарантировать, что это правильно работает, вы можете добавить дополнительный код, как было предложено в комментариях:

$wp_customize->get_setting( 'tcx_notification_text' )->transport ="postMessage";

2. Проверка JavaScript логики

В файле theme-customizer.js вы используете следующую логику, которая должна обновлять текст на странице:

(function( $ ) {
  "use strict";

  wp.customize('tcx_notification_text', function(value) {
    value.bind(function(to) {
      $('.notification-title').text(to);
    });
  });

})( jQuery );

Убедитесь, что вы правильно подключили этот файл скрипта и он загружается на странице настройки темы. Проверьте консоль браузера на наличие ошибок JavaScript, которые могут помешать выполнению скрипта.

3. Обеспечение коректного подключения скриптов

Ваша функция, которая добавляет скрипт к настройщику, выглядит следующим образом:

function tcx_customizer_live_preview() {
  wp_enqueue_script(
    'tcx-theme-customizer',
    get_template_directory_uri() . '/library/js/theme-customizer.js',
    array( 'jquery', 'customize-preview' ),
    '1.0.0',
    true
  );
}
add_action( 'customize_preview_init', 'tcx_customizer_live_preview' );

Проверьте путь к вашему JavaScript файлу. Если файл не загружается, логика его выполнения не будет достигнута, что может быть причиной вашей проблемы.

4. Проверка соответствующих классов и селекторов

Также убедитесь, что класс .notification-title, который вы используете в JavaScript, правильно привязан к элементу в вашем HTML. В файле header.php вы указали:

<strong class="notification-title"><?php echo get_theme_mod( 'tcx_notification_text' ); ?></strong>

Уберите возможные конфликты с другими элементами на странице, так как это может предотвратить правильное обновление текста.

5. Актуализация и тестирование

После внесения всех изменений, обновите страницу кастомизации темы и попробуйте снова ввести текст в поле. Обратите внимание на возможные кэширования в браузере, которые могут препятствовать новому отображению.

Заключение

Если после всех проверок и изменений проблема все еще существует, возможно, стоит проверить конфликты с другими плагинами или темами. Временами, проблемы с JavaScript могут происходить из-за других скриптов, сталкивающихся с вашим пользовательским кодом. Вам также может пригодиться инструкция по отладке JavaScript ошибок в консоли браузера. Успехов в вашей работе с настройщиком тем WordPress!

Оцените материал
Добавить комментарий

Капча загружается...