Я создал пользовательские типы сообщений, которые также имеют настраиваемые мета_боксы, которые я создал. В настоящее время они сохраняются, когда я публикую или обновляю сообщение, но не сохраняются, когда я вношу изменения в режиме черновика.
add_action('save_post', 'save_details');
function save_details(){
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
return $post_id;
}
global $post;
if ($post->post_type == 'events') { // Check to see if Event Type.
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"]);
}
}
Я пытался использовать wp_insert_post_data вместо save_post, но потом столкнулся с противоположной проблемой. На черновиках можно было сэкономить, но публикация поста уже не работала. Что мне нужно сделать по-другому, чтобы я мог обновить черновик (перед публикацией) и он сохранился?
Итак, вы сначала пытались подключиться
wp_insert_post_data
и могли сохранять метаданные при сохранении черновиков, но не при публикации. Затем вы пытались подключитьсяsave_post
и могли сохранять метаданные при публикации, но не при сохранении черновиков.Самым простым решением было бы подключиться к обоим.
Редактировать
Оба
save_post
иwp_insert_post_data
вызываются одновременно и передают два параметра функциям обратного вызова. В исходнике это выглядит так:Но ваша функция не принимает никаких параметров. Это приведет
return $post_ID
к сбою и, вероятно, вызовет другие проблемы.Вы должны иметь:
И ваш крючок должен быть:
Это пройдет как в вашу функцию, так
$post_ID
и$post
в вашу функцию, и все должно работать более гладко.Да, это имело бы смысл, но с обоими это работает так же, как с wp_insert_post_data. Сохраняет, но не публикует.
Пожалуйста, смотрите мою редакцию.
Спасибо. У меня все еще та же проблема даже с этими изменениями. На самом деле, я даже не могу заставить его опубликовать. Он отлично работает (как указано выше), когда я публикую или обновляю сообщение. Он просто не сохранит эти поля, когда я работаю в черновике.
Учитывая все вышесказанное, все, что вы написали выше, безусловно, имеет смысл, и я ценю помощь. Однако почему-то он не работает.
Вероятно, происходит что-то еще… но, не видя полного кода, я не могу его диагностировать. И поскольку это не форум для решения проблем с моим конкретным сайтом, вам, вероятно, больше повезет с глубоким устранением неполадок на форумах поддержки.
У вас может быть ответ, но он не очень ясен, как вы подозревали. Можете ли вы предоставить или воссоздать код, который работал на вас?
У меня была аналогичная проблема, которая, я думаю, была вызвана обновлением WordPress до 3.1, хотя у меня не было возможности вернуться назад, чтобы проверить. Я изменил свой код, чтобы передать $post_id и $post, как указано выше, позаботившись о передаче параметра 1,2, а не 10, 2, как указано выше, и это устранило проблему. добавление хука в wp_insert_post у меня не сработало и дало мне ошибки при добавлении нового пользовательского сообщения.
Надеюсь, это поможет. Мой первый ответ, так что извините, если я неясен.