我在“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 - 而是我应该使用直接提供给函数的参数。
答案 0 :(得分:2)
我查看了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
}