当我需要永久删除帖子时,如何才能挂钩函数?

时间:2012-01-23 作者:romulodl

只有当我从数据库中永久删除帖子时,我才需要挂接一个函数,我尝试了“before\\u delete\\u post”挂接,但是,当它被丢弃或永久删除时,它都会被调用。

wp\\u delete\\u post()函数调用wp\\u trash\\u post()并应停止处理,但似乎在日志被丢弃后会再次调用wp\\u delete\\u post()。

我看到了这个问题:Wordpress Delete hook with wp_delete_post function?. 我的需要正是它的目的。

2 个回复
最合适的回答,由SO网友:romulodl 整理而成

问题是“站点范围的标签”插件,它不符合自然的WP流。调用的函数sitewide_tags_post_delete() 被“trash\\u post”吸引,正在呼叫wp_delete_post() 删除主博客上的帖子。

按照斯蒂芬的方法,我做到了:

add_action(\'before_delete_post\', \'my_deleted_post\');
function my_deleted_post($post_id){
  global $blog_id;   
  if($blog_id == <main_blog_id>){ // usually is 1
    return false;
  }

  //do whatever you need :)
};

SO网友:Stephen Harris

before_delete_post 仅当帖子被丢弃时才调用。

虽然wp_delete_post() 垃圾桶帖子(如果帖子没有被丢弃,也没有被强制删除):它通过调用wp_trash_post() 以及在触发动作之前退出该功能before_delete_post.

我已经对此进行了测试,以下函数只有在永久删除帖子时才会“消亡”,但在其仅限于垃圾桶时不会Thewp_die 是为了演示通话时间-我不建议在现场使用

add_action(\'before_delete_post\', \'my_deleted_post\');
function my_deleted_post($post_id){
   wp_die(var_dump($post_id));
};
Thewp_delete_post() 可以找到函数here (WP 3.3.1)

结束

相关推荐

数据库中的wp_5_posts表是什么?

我想知道wp_2_*, wp_3_*, wp_4_*, 和wp_5_* 表位于数据库中。有人知道他们是什么吗?在我的示例中,其中一些来自插件,但是wp_# 前缀表示什么?为什么有些核心数据库表会有重复的数据?mysql> show tables; +-----------------------------+ | Tables_in_example | +-----------------------------+ | wp_2_commentme