Chiamare una Funzione Dopo la Creazione di un Nuovo Post per un Custom Post Type di WordPress?
Supponiamo che abbia creato un nuovo post type 'product'
. Esiste un modo per eseguire una funzione (creata dall'utente) quando questo nuovo post 'product'
viene creato?

In functions.php:
function mynewproduct(){
myfunction();
}
add_action( 'new_product', 'mynewproduct' );
Per maggiori informazioni e la documentazione ufficiale, fare riferimento qui:

Ciao @dotty:
Dai un'occhiata alla fine della funzione wp_insert_post()
nel file /wp-includes/post.php
(righe 2148 fino a 2392 in WordPress 3.0.1. Nota che WordPress utilizza questa funzione sia per aggiungere che per aggiornare i post.)
Alla fine contiene il seguente codice. Da questo codice puoi identificare la chiamata a wp_transition_post_status()
(ne parleremo più avanti) e abbiamo gli hook di azione edit_post
, post_updated
, save_post
e wp_insert_post
(francamente non so perché abbiamo gli ultimi due invece di uno solo.) Puoi usare quelli appropriati alle tue esigenze:
<?php
wp_transition_post_status($data['post_status'], $previous_status, $post);
if ( $update ) {
do_action('edit_post', $post_ID, $post);
$post_after = get_post($post_ID);
do_action( 'post_updated', $post_ID, $post_after, $post_before);
}
do_action('save_post', $post_ID, $post);
do_action('wp_insert_post', $post_ID, $post);
return $post_ID;
E come ha menzionato @Jan Fabry, ci sono gli hook di azione presenti in wp_transition_post_status()
(righe 2713 fino a 2717 di /wp-includes/post.php
in WordPress 3.0.1.) Nota che ce ne sono tre; usa quelli appropriati:
<?php
function wp_transition_post_status($new_status, $old_status, $post) {
do_action('transition_post_status', $new_status, $old_status, $post);
do_action("${old_status}_to_$new_status", $post);
do_action("${new_status}_$post->post_type", $post->ID, $post);
}

La funzione wp_transition_post_status
verrà chiamata, e questo attiverà l'azione "${new_status}_$post->post_type"
, quindi se un product
passa allo stato publish
, verrà attivata l'azione publish_product
.
