Supposons que j'ai créé un nouveau type de message 'product'
. Existe-t-il un moyen d’exécuter une fonction (créée par l’utilisateur) lorsque cette nouvelle publication 'product'
a été créée?
Dans functions.php:
function mynewproduct(){
myfunction();
}
add_action( 'new_product', 'mynewproduct' );
Pour plus d'informations et la documentation officielle, voir ici:
Bonjour @dotty:
Jetez un coup d'œil à la fin de la fonction wp_insert_post()
dans le fichier /wp-includes/post.php
(sur les lignes 2148 à 2392 dans WordPress 3.0.1. Notez que WordPress utilise cette fonction pour l'ajout et la mise à jour de posts. )
À la fin, il y a le code suivant. A partir de ce code, vous pouvez identifier l'appel à wp_transition_post_status()
(plus à ce sujet dans un instant) et nous avons les crochets d'action edit_post
, post_updated
, save_post
et wp_insert_post
( franchement, je ne sais pas pourquoi nous avons les deux derniers au lieu de ) Vous pouvez utiliser n’importe lequel de ceux qui conviennent à vos besoins:
<?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;
Et comme @ Jan Fabry , il est mentionné les crochets d'action trouvés dans wp_transition_post_status()
(sur 2713 à 2717 du /wp-includes/post.php
dans WordPress 3.0.1.) Notez qu'il y en a trois; utiliser selon le cas:
<?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 fonction wp_transition_post_status
sera appelée, ce qui déclenchera l'action "${new_status}_$post->post_type"
. Ainsi, si une product
passe à l'état publish
, l'action publish_product
sera déclenchée.