Retorna $ post_id quando DOING_AUTOSAVE?

8

Eu vejo o seguinte padrão várias vezes, neste site e em outros lugares:

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

Por que devo devolver $post_id ? save_post é uma ação e o valor de retorno de uma ação o manipulador é ignorado . O núcleo do WordPress em si também não o faz .

O exemplo do Codex retorna o $post_id , mas não seria o primeiro incorreto (ou desatualizado ) no Codex.

Estou faltando alguma coisa? Preciso devolver $post_id ? Houve um momento em que isso era necessário?

    
por Jan Fabry 07.04.2011 / 15:07

2 respostas

5

A ação 'save_post' foi adicionada ao núcleo em 2.0 e sempre foi uma ação. Observando os procedimentos atuais de salvamento automático, não parece chamar a ação 'save_post' diretamente a qualquer momento.

Então a resposta curta é não. Não há razão e nunca houve motivo para devolver qualquer valor a essa ação. Claro, não faz mal nenhum retornar o ID do post.

    
por John P Bloch 07.04.2011 / 16:30
6

Como nada está sendo feito com o valor de retorno, retornar o ID do post é inútil e não deve ser feito. Apenas oferece espaço para confusão.

Experimentei, a ação save_post a seguir funciona bem.

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 ...

}
    
por Geert 03.05.2011 / 20:58