Вызов функции после создания нового поста для пользовательского типа записи в WordPress?
Предположим, я создал новый тип записи 'product'
. Есть ли способ выполнить пользовательскую функцию после того, как этот новый пост типа 'product'
будет создан?

В functions.php:
function mynewproduct(){
myfunction();
}
add_action( 'new_product', 'mynewproduct' );
Для получения дополнительной информации и официальной документации обратитесь сюда:

Привет, @dotty:
Посмотрите на конец функции wp_insert_post()
в файле /wp-includes/post.php
(строки 2148-2392 в WordPress 3.0.1. Обратите внимание, что WordPress использует эту функцию как для добавления, так и для обновления записей.)
В конце находится следующий код. Из него можно увидеть вызов wp_transition_post_status()
(подробнее об этом чуть позже), а также хуки действий edit_post
, post_updated
, save_post
и wp_insert_post
(честно говоря, не понимаю, зачем нужны последние два вместо одного.) Вы можете использовать любой из них, подходящий для ваших нужд:
<?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;
И, как упомянул @Jan Fabry, существуют хуки действий, находящиеся в wp_transition_post_status()
(строки 2713-2717 файла /wp-includes/post.php
в WordPress 3.0.1.) Обратите внимание, их три; используйте подходящий:
<?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);
}

Функция wp_transition_post_status
будет вызвана, и это запустит действие "${new_status}_$post->post_type"
, так что если product
переходит в состояние publish
, будет вызвано действие publish_product
.
