Вернуть $ post_id, когда DOING_AUTOSAVE?

8

Я вижу следующую картину снова и снова, на этом сайте и в других местах:

add_action( 'save_post', 'wpse14169_save_post' );
function wpse14169_save_post( $post_id )
{
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }
    // Other code...
}

Почему я должен вернуться $post_id? save_postявляется действием, а возвращаемое значение обработчика действия игнорируется . Само ядро ​​WordPress тоже этого не делает .

Пример Кодекса действительно возвращает$post_id , но это не будет первая неправильная (или устаревшая) строка в Кодексе.

Я что-то пропустил? Мне нужно вернуться $post_id? Было ли время, когда это было необходимо?

Ян Фабри
источник
Для справки здесь есть правка, представившая раннюю версию Кодекса . Я не узнаю логин, вы можете попытаться найти человека и спросить (если это интересно).
Rarst

Ответы:

5

'save_post'Действие было добавлено в ядро в 2.0 , и всегда было действие. Просматривая текущие процедуры автосохранения, он, кажется, не вызывает 'save_post'действие напрямую в любое время.

Итак, короткий ответ: нет. Нет никаких причин, и никогда не было никаких причин возвращать какое-либо значение в этом действии. Конечно, совсем не больно возвращать идентификатор записи.

Джон П Блох
источник
7

Поскольку с возвращаемым значением ничего не делается, возвращать идентификатор сообщения бессмысленно и не следует делать. Это только дает место для путаницы.

Только что попробовал, следующее save_postдействие отлично работает.

function my_save_post($post_id)
{
    // Stop WP from clearing custom fields on autosave
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;

    // Prevent quick edit from clearing custom fields
    if (defined('DOING_AJAX') && DOING_AJAX)
        return;

    // Sanitize, validate and save ...

}
Герт
источник