web-dev-qa-db-fra.com

Retourne $ post_id quand DOING_AUTOSAVE?

Je vois encore et encore le motif suivant, sur ce site et d'autres endroits:

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

Pourquoi devrais-je retourner $post_id? save_post est une action et la valeur de retour d'un gestionnaire d'actions est ignorée . Le noyau WordPress lui-même ne le fait pas non plus .

L'exemple de Codex renvoie le $post_id , mais il ne s'agirait pas de la première ligne incorrecte (ou obsolète) du Codex.

Est-ce que je manque quelque chose? Dois-je retourner $post_id? Y a-t-il eu un moment où cela était nécessaire?

8
Jan Fabry

L'action 'save_post' était ajoutée au cœur de la version 2.0 et a toujours été une action. En parcourant les procédures de sauvegarde automatique en cours, il ne semble pas appeler l'action 'save_post' directement à aucun moment.

Donc, la réponse courte est non. Il n'y a aucune raison, et n'a jamais été une raison, pour rendre aucune valeur sur cette action. Bien sûr, cela ne fait pas mal du tout de renvoyer l'identifiant de l'article.

5
John P Bloch

Puisque rien n'est fait avec la valeur de retour, renvoyer l'ID de publication est inutile et ne devrait pas être fait. Cela ne laisse place qu’à la confusion.

Vient de l’essayer, l’action save_post suivante fonctionne bien.

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

}
6
Geert