为WordPress自定义帖子类型创建新帖子后调用函数?

时间:2010-09-06 作者:dotty

假设我创建了一个新的帖子类型\'product\'. 当这个新的\'product\' 是否已创建帖子?

3 个回复
SO网友:Tom J Nowell

在功能上。php:

function mynewproduct(){
    myfunction();
}
add_action( \'new_product\', \'mynewproduct\' );
有关更多信息和官方文档,请参阅此处:

http://codex.wordpress.org/Post_Status_Transitions

SO网友:MikeSchinkel

你好@dotty:

看一下wp_insert_post() 文件中的函数/wp-includes/post.php (在WordPress 3.0.1的第2148至2392行。请注意,WordPress将此功能用于添加和更新帖子。)

最后,它有以下代码。从该代码中,您可以识别调用wp_transition_post_status() (稍后会有更多内容)我们有动作挂钩edit_post, post_updated, save_postwp_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);
}

SO网友:Jan Fabry

这个wp_transition_post_status 将调用函数,这将触发操作"${new_status}_$post->post_type", 所以如果product 移动到publish 州,行动publish_product 将被触发。

结束

相关推荐