Быстрое редактирование: выбранная пользовательская таксономия не обновляется после сохранения

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

Похоже, это распространенная проблема, так как ее обсуждали здесь, но я не могу решить ее в своей установке. Я настроил фильтр, чтобы изменить кнопку быстрого редактирования, чтобы определить правильное выбранное значение для выпадающего списка пользовательской таксономии в быстром редакторе. Это работает при обновлении страницы, но не после изменения и нажатия “Обновить”. Похоже, это ошибка JS, но я не могу понять, как ее исправить. Насколько я понимаю, функция должна применяться к строке быстрого редактирования ПОСЛЕ того, как она была изменена при первоначальном AJAX-запросе.

Вот мой код:

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

Я добавил этот код, чтобы обновить выбранное поле, определив соответствующее значение в колонке таксономии:

jQuery(document).ready(function($) {

  // Создаем копию функции WP для планового редактирования постов
  var $wp_inline_edit = inlineEditPost.edit;

  // Переопределяем функцию нашим кодом
  inlineEditPost.edit = function( id ) {

     // Вызываем оригинальную функцию редактирования WP
     $wp_inline_edit.apply( this, arguments );

     // получаем ID поста
     var $post_id = 0;
     if ( typeof( id ) == 'object' )
        $post_id = parseInt( this.getId( id ) );

     if ( $post_id > 0 ) {

        // получаем значение $outcome из соответствующей колонки
        var $outcome = $( '#outcome-' + $post_id ).text();

        // отмечаем текущее значение $outcome как выбранное
        $("#tip_outcome_selection option").each(function(){
           if($( this ).val() == $outcome){
              $( this ).attr( "selected", "selected" );
           }
        });
     }
  };
});

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

Проблема выбраной пользовательской таксономии в Quick Edit: Несоответствие после сохранения

Запрос о том, как исправить проблему с обновлением пользовательской таксономии в функции Quick Edit в WordPress, встречается довольно часто. Проблема заключается в том, что после изменения значения в выпадающем списке и нажатия кнопки "Обновить", новое значение не отображается, и это может быть связано с ошибками в JavaScript. Давайте разберем, как можно это исправить и обеспечить корректное обновление данных после AJAX-вызова.

Понимание проблемы

Когда вы используете функциональность Quick Edit для редактирования постов, WordPress выполняет AJAX-запрос, который обновляет данные. Если вы настраиваете пользовательские поля (например, пользовательские таксономии), важно убедиться, что ваш скрипт JavaScript корректно взаимодействует с DOM-элементами таким образом, чтобы эти изменения были видимы сразу после обновления.

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

Код решения проблемы

Представленный вами код выглядит следующим образом:

jQuery(document).ready(function($) {
  // Создаем копию функции WP inline edit post
  var $wp_inline_edit = inlineEditPost.edit;

  // Перезаписываем функцию нашим кодом
  inlineEditPost.edit = function( id ) {
     // Вызываем оригинальную функцию WP
     $wp_inline_edit.apply( this, arguments );

     // Получаем ID поста
     var $post_id = 0;
     if ( typeof( id ) == 'object' )
        $post_id = parseInt( this.getId( id ) );

     if ( $post_id > 0 ) {
        // Получаем значение из соответствующего столбца
        var $outcome = $( '#outcome-' + $post_id ).text();

        // Отмечаем текущее значение как выбранное
        $("#tip_outcome_selection option").each(function(){
           if($( this ).val() == $outcome){
              $( this ).attr( "selected", "selected" );
           }
        });
     }
  };
});

Возможные причины неисправности

  1. Отсутствие события после обновления: Убедитесь, что ваш скрипт выполняется после того, как изменения были применены к посту. Это можно сделать, добавив слушателя событий (например, на событие post_updated).

  2. Конфликт с другими плагинами: Иногда другие плагины могут вмешиваться в вашу логику JavaScript. Если у вас есть сторонние плагины, попробуйте отключить их и протестировать вашу функцию.

  3. Ошибки в консоли: Обязательно открывайте инструменты разработчика вашего браузера и проверяйте консоль на наличие ошибок JavaScript. Это поможет вам более точно определить, где происходит сбой.

Советы по оптимизации кода

  • Используйте $(document).on('event', selector, function(...)), чтобы избежать ситуации, когда элементы не инициируются должным образом.
  • Рассмотрите возможность использования data-attributes для хранения значения таксономии, что может упростить доступ к этим данным.
  • Убедитесь, что ваш код совместим с последними версиями WordPress и проверяйте его регулярно.

Заключение

Справиться с проблемой обновления пользовательской таксономии в Quick Edit — это задача, требующая внимательности к деталям, особенно в отношении асинхронных операций и взаимодействия с DOM. Следуя приведенным рекомендациям и применяя предложенные улучшения, вы сможете обеспечить, чтобы изменения были корректно отображены после обновления. Не забывайте делиться своими успехами и решениями с сообществом, так как это может помочь другим сталкиваться с подобными вызовами.

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

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