Я разработал плагин для WordPress, который должен выполнять дополнительную обработку при сохранении записи пользовательского типа.
Наиболее логичным решением было использование действия "save_post". После вызова обработчик действия создает или обновляет запись базы данных в пользовательской таблице (в зависимости от того, нажата ли кнопка «Создать публикацию» или «Обновить публикацию»).
Я реализовал это, и казалось, что оно работает отлично, но есть небольшая проблема, которую я хотел бы решить. Похоже, что «save_post» также запускается при первой загрузке страницы «Создать запись» (т. Е. До того, как вводятся какие-либо пользовательские вводы и до нажатия кнопки «Отправить новый / изменения»).
Это означает, что пользовательская таблица базы данных заполняется одной пустой строкой для каждого нового сохраненного сообщения. Это также означает, что при каждой загрузке страницы добавления поста имеется одна пустая строка.
Вот упрощенная версия моего обработчика save_post:
function do_save_post($post_id) {
if (get_post_type($post_id) !== 'mycustomtype')
return $post_id;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
if (!current_user_can('edit_mycustomtype'))
return $post_id;
echo 'This happens when selecting "Add New" from admin sidebar.';
echo 'Even though post has not been saved or updated.';
echo 'This should only happen when button on right of editor is clicked.';
}
Как определить, действительно ли запись сохраняется?