Wordpress - действие при удалении поста (более одного)

У меня проблема с запуском функции для действия "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 для получения идентификатора отдельных сообщений, когда вместо этого я должен использовать параметр, который предоставляется функции напрямую.


person cool    schedule 07.05.2012    source источник


Ответы (1)


Я посмотрел на код в 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
}
person janw    schedule 07.05.2012