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