добавьте фильтр в "меню быстрого редактирования" в администраторе wordpress
В настоящее время я работаю над плагином WordPress. плагин включает таблицу базы данных, которая обновляется каждый раз, когда создается, редактируется или удаляется сообщение с данными этого сообщения. один из столбцов в этой таблице - "post_status", и мне нужно, чтобы он обновлялся со статусом записи всякий раз, когда он меняется. прямо сейчас я использую этот код:
function filter_transition_post_status( $new_status, $old_status, $post ) {
global $post;
global $wpdb;
$wpdb->query(" UPDATE my_table SET post_status='$new_status' WHERE post_id=$post->ID");
}
add_action('transition_post_status', 'filter_transition_post_status', 10, 3);
Приведенный выше код отлично работает, когда я изменяю статус публикации на странице "редактировать публикацию". когда я изменю статус из сообщения изменение происходит и в моей таблице. однако код не работает, когда я использую режим "быстрое редактирование" для изменения статуса публикации или массового изменения нескольких записей. изменение не происходит в моей таблице. любая помощь в решении этой проблемы будет очень признательна. спасибо
1 answers
Вы не хотите ссылаться на глобальный $post
, но на сообщение, которое вам дано в качестве одного из аргументов. Вам просто нужно удалить global $post
;
Не забудьте также очистить имена функций ввода и префиксов.
function wpse50651_filter_transition_post_status( $new_status, $old_status, $post ) {
global $wpdb;
$wpdb->query(
$wpdb->prepare(
"UPDATE my_table SET post_status=%s WHERE post_id=%d",
$new_status,$post->ID
)
);
}
add_action('transition_post_status', 'wpse50651_filter_transition_post_status', 10, 3);