Проблема с действием WordPress «save_post»

Я разработал плагин 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.';
}

Как я могу определить, действительно ли сообщение сохраняется?

8
задан Raffael 25 March 2011 в 21:24
поделиться