J'essaie d'utiliser cette fonction que j'ai créée lorsqu'un article est publié pour la première fois.
function a_new_post($post){
$post_id = $post->ID;
if ( !get_post_meta( $post_id, 'firstpublish', $single = true ) ) {
// ...run code once
update_post_meta( $post_id, 'firstpublish', true );
}
}
add_action( 'draft_to_published', 'a_new_post' );
Je ne vois rien de mal à cela, mais lorsque j'essaie de créer quelques exemples de messages, je vérifie la base de données et le champ "première publication" n'a pas été créé.
Est-ce que quelqu'un voit quelque chose de mal?
L'action correcte est 'draft_to_publish'
.
Pour vous assurer que vous avez utilisé le bon statut, essayez d’obtenir une liste de tous les statuts de publication enregistrés (y compris les statuts personnalisés) avec:
<pre><?php print '- ' . implode( "\n- ", array_keys( get_post_stati() ) );?></pre>
Sur une installation de Vanilla, vous devriez obtenir:
Notez que publish_post
est appelé chaque fois que vous éditez un article publié.
Notez également que get_post_stati()
est l’un de ces noms imprévisibles dans WordPress: il est tout simplement faux. Le pluriel du nom status est statuses en anglais et statūs en latin. :RÉ
Vous pouvez également vous connecter à 'transition_post_status'
, selon vos besoins. Vous obtenez les nouveaux et les anciens statuts en tant qu'arguments, le troisième argument est l'objet post. Il attrapera aussi future_to_publish
, ainsi que les publications qui ont été supprimées une fois et republiées maintenant (trash_to_publish
).
Exemple:
add_action( 'transition_post_status', 'a_new_post', 10, 3 );
function a_new_post( $new_status, $old_status, $post )
{
if ( 'publish' !== $new_status or 'publish' === $old_status )
return;
if ( 'post' !== $post->post_type )
return; // restrict the filter to a specific post type
// do something awesome
}
Post First save La méta-valeur Time est si facile à appliquer lors de la première utilisation.
function a_new_post( $post_id, $post, $update ) {
if ( !get_post_meta( $post_id, 'firstpublish', $single = true ) ) {
update_post_meta( $post_id, 'firstpublish', true );
}
}
add_action( 'save_post', 'a_new_post', 10, 3 );