save_post
называется независимо от того, является ли это черновиком или опубликованным сообщением, поэтому я удивлен, что это не работает. Хотя я вижу некоторые странности в вашем коде.
Учитывая, что у вас есть $post_ID
, я бы предпочел использовать его вместо глобального $post
. Кроме того, я предпочитаю следующий метод обнаружения авто-черновиков (я скопировал его прямо из wp-includes / post.php, я предпочитаю исследовать кодовую базу Wordpress и эмулировать их методы, когда это возможно).
Пожалуйста, попробуйте следующий переработанный код и дайте мне знать, если это решит вашу проблему.
add_action("save_post", "save_details");
function save_details($post_ID = 0) {
$post_ID = (int) $post_ID;
$post_type = get_post_type( $post_ID );
$post_status = get_post_status( $post_ID );
if ( "events" == $post_type && "auto-draft" != $post_status ) {
update_post_meta($post_ID, "event_featuring", $_POST["event_featuring"]);
update_post_meta($post_ID, "event_time", $_POST["event_time"]);
update_post_meta($post_ID, "event_date", $_POST["event_date"]);
update_post_meta($post_ID, "event_end_date", $_POST["event_end_date"]);
update_post_meta($post_ID, "event_location", $_POST["event_location"]);
update_post_meta($post_ID, "empid", $_POST["empid"]);
update_post_meta($post_ID, "bhs_event", $_POST["bhs_event"]);
}
return $post_ID;
}