0

我在触发“delete_post”操作时遇到问题。我正在构建功能,我必须在数据库中再添加一个表(我不能为此使用 wp_postmeta)。因此,我创建了一个自定义表,其中包含与帖子相关的附加数据。我希望,当管理员从管理面板中删除帖子时,在我的自定义表中删除该帖子的数据(我不希望在帖子消失时冗余数据留在那里)

我实现了这样的东西:

add_action('admin_init', 'codex_init');
function codex_init() {
   if (current_user_can('delete_posts')) add_action('delete_post', 'delete_something');
}

function delete_something($postid) {
   //here im deleting everything from that table with that post id for that post type
}

如果有人单击以仅删除一个帖子,这将非常有效。但是当我想一次删除更多帖子时(检查 wordpress 管理菜单上的按钮并选择删除选项 - 批量删除),这不起作用吗?我在这里做错了什么,或者当有人想一次删除多个帖子时是否有不同的操作?


编辑:

如以下评论所示,此操作也非常适用于批量和单个删除操作。我的问题与全局 $post 变量的使用有关 - 获取单个帖子的 id - 而我应该使用直接提供给函数的参数。

4

1 回答 1

3

我查看了其中的代码wp-admin/edit.php确实触发了wp_delete_post具有您操作的功能。
试试这个。难道die又撞了var_dump

add_action('admin_init', 'codex_init');
function codex_init() {
   if (current_user_can('delete_posts')) add_action('delete_post', 'delete_something');
}

function delete_something($postid) {
     var_dump('trigger'.$postid);die();
     //here im deleting everything from that table with that post id for that post type
}
于 2012-05-07T12:44:28.940 回答