Кнопка сохранения на странице настройки темы остается недоступной.

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

Окей, вот сценарий:
Я добавил пользовательский раздел в существующую тему, чтобы он отображался на странице настройки темы (customize.php).
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как уведомить WordPress, когда в моем пользовательском контроле вносятся изменения. Думаю, я пропустил что-то в своем коде, потому что это должно происходить автоматически.

Вот пример кода:

$wp_customize->add_section('my_section', 
    array(
        'title' => 'Мой заголовок',
        'description' => 'Мое описание',
        'priority' => 201
    )
);

$wp_customize->add_setting(
    'my_setting',
    array(
        'default' => '',
        'type' => 'option',
        'transport' => 'postMessage'
    )
);

$wp_customize->add_control(
    new My_Control(
        $wp_customize,
        'my_control',
        array(
            'label'    => 'Моя метка',
            'settings' => 'my_setting',
            'section'  => 'my_section'
        )
    )
);

Обратите внимание, что My_Control — это класс, который подключает дополнительные js/css файлы и отображает мой сортируемый список.
Я храню свою модель в массиве, а не используя несколько настроек; я добавляю свою модель на страницу с помощью функции wp_localize_script.

Обновление в реальном времени достигается с помощью JavaScript. Работает ли ваш .js код? Кодекс имеет отличные примеры, и я думаю, что у Отто есть пост об этом где-то в Google.

https://codex.wordpress.org/Theme_Customization_API

Подождите, зачем использовать transport => postMessage? Это для обработки общения между контролем и JS-скриптом.

Вам следует использовать transport => refresh, таким образом WordPress будет обновляться при изменении ввода.

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

Если кнопка "Сохранить" на странице настройки темы WordPress остается неактивной, это может быть связано с несколькими аспектами, касающимися вашей реализации. Вы упомянули, что добавили кастомный раздел к существующей теме и хотите, чтобы WordPress знал о внесенных изменениях. Рассмотрим основные шаги и решения данной проблемы.

1. Проверьте настройку транспорта

В вашем коде при добавлении настройки вы указали транспортировку как postMessage. Это подходит для реализации синхронного обновления значений с помощью JavaScript. Однако, если вы хотите, чтобы кнопка "Сохранить" активировалась при изменении значений, рекомендуется использовать transport => 'refresh'. Это заставит WordPress обновлять результат на странице, а также активировать кнопку сохранения.

Пример изменения кода:

$wp_customize->add_setting(
    'my_setting',
    array(
        'default'   => '',
        'type'      => 'option',
        'transport' => 'refresh' // Измените 'postMessage' на 'refresh'
    )
);

2. Реализация JavaScript

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

Пример подключения JavaScript с использованием wp_enqueue_script:

function my_customize_scripts($wp_customize) {
    wp_enqueue_script('my-custom-js', get_template_directory_uri() . '/js/my-custom.js', array('jquery', 'customize-preview'), null, true);
}
add_action('customize_preview_init', 'my_customize_scripts');

В вашем JavaScript коде должно быть обработано событие изменения значения, например:

wp.customize('my_setting', function(value) {
    value.bind(function(newval) {
        // Здесь вы можете обновить интерфейс с новым значением
    });
});

3. Проверка доступности данных

Так как вы храните данные в массиве и используете wp_localize_script, убедитесь, что данные корректно передаются в JavaScript. Например, при добавлении вашего массива:

$data = array('my_array' => $my_array);
wp_localize_script('my-custom-js', 'myData', $data);

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

4. Отладка

Если кнопка "Сохранить" все еще остается неактивной, начать стоит с отладки. Поиск ошибок в консоли браузера может дать понимание, если что-то идет не так. Также проверьте, правильно ли данный контроль подключен и используется ли функция wp_customize->get_setting('my_setting')->set_value() для обновления значения.

Заключение

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

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

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