将帖子移到垃圾桶时要执行的函数。

时间:2011-02-28 作者:Harjeet Singh

您好,当帖子被移动到垃圾箱时,是否有可以执行的操作。。。。我尝试了delete\\u post和deleted\\u post。它只对每个操作起作用两次(在codex中写入的操作之前和之后),并且仅当从垃圾箱中删除帖子时才显示输出。例如,我想向作者发送一封电子邮件,说明他的帖子由于某种原因已被移至垃圾箱,并更新一些user\\u meta。如果我使用

add_action(\'deleted_post\', \'emailUser\');

add_action(\'delete_post\', \'emailUser\');
只有当文章从垃圾桶中删除时,它才起作用。

Update : 让它为垃圾站工作

add_action(\'trash_post\', \'emailUser\');
但函数的双重执行问题仍然存在。

3 个回复
SO网友:Tom J Nowell

这就成功了!

add_action(\'trash_post\',\'my_trash_post_function\',1,1);
function my_trash_post_function($post_id){
    if(!did_action(\'trash_post\')){
        // do stuff
    }
}
在这里,我们添加了函数,为了防止钩子使用did\\u操作执行多次:

http://codex.wordpress.org/Function_Reference/did_action

像往常一样,这种挂钩的形式{post_status}_{post_type}, 所以trash_post, trash_page, trash_customposttype, publish_page

SO网友:Simon Blackbourn

当帖子移动到垃圾箱时,将调用该操作一次,然后在清空垃圾箱时再次调用该操作。

您的函数可以检查名称中是否存在带有post ID的选项,如果不存在该选项,则会发送电子邮件,然后设置该选项。如果存在该选项(例如,第二次呼叫),则不会发送电子邮件。

请记住删除该选项,这样您的数据库就不会被它们填满!

add_action( \'delete_post\', \'emailUser\' );

function emailUser( $postid ) {

   if ( ! get_option( \'user_emailed_\' . $postid ) ) {
      // send email here
      update_option( \'user_emailed_\' . $postid, \'anything\' );
   } else {
      delete_option( \'user_emailed_\' . $postid );
   }

}
如果有用,请告诉我!

SO网友:Mohamed Salem Lamiri

add_action(\'trash_post\', \'trash_post_function_name\');
在WP 4.7.5中,上述挂钩不适用于我。

这对我很有用

add_action(\'wp_trash_post\', \'trash_post_function_name\');

结束

相关推荐

Text after more tag in posts

嘿,有没有可能我可以把一段代码放在某个地方,它会出现在更多的标记分隔符之后,但在帖子中?我的意思是,如果我在第一段后面加上更多的分隔符,那么在后面的帖子区域会显示我要加的代码。。可能是一些带有twitter和rss链接的html。感谢您的帮助:)谢谢