- 21, Oct 2024
- #1
У меня есть собственный тип записи под названием «смена» (как в сменах, выполняемых сотрудниками). Когда смены публикуются, я запускаю функцию Ajax, чтобы проверить, нет ли в этой смене конфликта расписания. Если возникает конфликт планирования, появляется диалоговое окно, предупреждающее пользователя о конфликте и спрашивающее, хотят ли они продолжить. Если они выберут «Отменить», сообщение не будет опубликовано. Если они выберут «продолжить», сообщение будет опубликовано.
Вот в чем проблема: если они выберут «продолжить», сообщение будет сохранено как черновик, а не опубликовано. Как сделать так, чтобы сообщение публиковалось при нажатии кнопки «Опубликовать»?
Вот JS (немного упрощенный, чтобы вы могли видеть важные части):
$('#hidden_post_status').val('publish');
Обратите внимание на строку $('#publish').on('click', function (e) {
e.preventDefault();
var url = shiftajax.ajaxurl;
var shift = $('#post_ID').val();
var data = {
'action': 'wpaesm_check_for_schedule_conflicts_before_publish',
'shift': shift,
};
$.post(url, data, function (response) {
if( response.action == 'go' ) {
// there aren't any scheduling conflicts, so we can publish the post
$('#hidden_post_status').val('publish');
$('#post').submit();
} else {
// there are scheduling conflicts, so ask the user if they want to publish
if (confirm(response.message)) {
$('#hidden_post_status').val('publish');
$('#post').submit();
} else {
// do nothing
}
}
});
});
- that does change the value of the hidden field with an ID of "hidden_post_status", but that doesn't have an effect. The post is still saved as a draft.
#ajax #публиковать #пост-статус