Вопрос или проблема
Похоже, это распространенная проблема, так как ее обсуждали здесь, но я не могу решить ее в своей установке. Я настроил фильтр, чтобы изменить кнопку быстрого редактирования, чтобы определить правильное выбранное значение для выпадающего списка пользовательской таксономии в быстром редакторе. Это работает при обновлении страницы, но не после изменения и нажатия “Обновить”. Похоже, это ошибка 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" );
}
});
}
};
});
Возможные причины неисправности
-
Отсутствие события после обновления: Убедитесь, что ваш скрипт выполняется после того, как изменения были применены к посту. Это можно сделать, добавив слушателя событий (например, на событие
post_updated
). -
Конфликт с другими плагинами: Иногда другие плагины могут вмешиваться в вашу логику JavaScript. Если у вас есть сторонние плагины, попробуйте отключить их и протестировать вашу функцию.
-
Ошибки в консоли: Обязательно открывайте инструменты разработчика вашего браузера и проверяйте консоль на наличие ошибок JavaScript. Это поможет вам более точно определить, где происходит сбой.
Советы по оптимизации кода
- Используйте
$(document).on('event', selector, function(...))
, чтобы избежать ситуации, когда элементы не инициируются должным образом. - Рассмотрите возможность использования
data-attributes
для хранения значения таксономии, что может упростить доступ к этим данным. - Убедитесь, что ваш код совместим с последними версиями WordPress и проверяйте его регулярно.
Заключение
Справиться с проблемой обновления пользовательской таксономии в Quick Edit — это задача, требующая внимательности к деталям, особенно в отношении асинхронных операций и взаимодействия с DOM. Следуя приведенным рекомендациям и применяя предложенные улучшения, вы сможете обеспечить, чтобы изменения были корректно отображены после обновления. Не забывайте делиться своими успехами и решениями с сообществом, так как это может помочь другим сталкиваться с подобными вызовами.