почему я не должен сохранять метаданные, когда это пересмотр
Я читаю книгу о WordPress, и я новичок и сбит с толку.
Почему автор всегда не сохраняет данные в поле метаданных при их пересмотре. на всякий случай, если это не ясно, я ссылаюсь на поле метаданных, добавленное add_meta_box
.
//save meta box data
function pp_save_meta_box($post_id,$post) {
// if post is a revision skip saving our meta box data
if($post->post_type == 'revision') { return; }
// process form data if $_POST is set
if(isset($_POST[’pp_sku’]) && $_POST[’pp_sku’] != ‘’) {
// save the meta box data as post meta using the post ID as a unique prefix
update_post_meta($post_id,’pp_sku’, esc_attr($_POST[’pp_sku’]));
update_post_meta($post_id,’pp_price’, esc_attr($_POST[’pp_price’]));
update_post_meta($post_id,’pp_weight’, esc_attr($_POST[’pp_weight’]));
update_post_meta($post_id,’pp_color’, esc_attr($_POST[’pp_color’]));
update_post_meta($post_id,’pp_inventory’,esc_attr($_POST[’pp_inventory’]));
}
}
2 answers
Вы не указали, как называется эта функция. Я предполагаю, что это добавлено в действие save_post
.
Это действие передает текущий идентификатор записи в качестве аргумента. В случае пересмотра это будет идентификатор редакции, а не идентификатор родительской записи. Итак, как я вижу, нет причин сохранять дополнительные данные для пересмотра (создавая дублирующий набор).
Обновление.
Вычеркните это.
Я просмотрел исходный код. По-видимому, функции *_post_meta
автоматически изменятся на родительские идентификатор записи, если передан идентификатор записи ревизии. Таким образом, вы можете изменить исходное сообщение, думая, что изменяете редакцию.
Когда я смотрю на свою таблицу postmeta
, кажется, что метаданные никогда не сохраняются для изменений после публикации. Я не думаю, что это должно быть так: я могу придумать некоторые варианты использования, в которых плагинам было бы полезно также сохранять дополнительные метаданные для изменений. Возьмите свой пример, возможно, из примера интернет-магазина: если я сначала создам продукт по цене 20 долларов, а затем уменьшу цену до 10 долларов, это, вероятно, сохранит старые текстовые поля в качестве редакции, но сотрет старые поля цен. Это может быть полезно также сохранить историю цен.
Я предполагаю, что функции, которые имеют дело с метаданными, не полностью поддерживают работу с изменениями метаданных, поэтому нам пока не следует ожидать большой поддержки от плагинов. Но, если вы создадите плагин, имейте в виду, как может быть полезно сохранение (и извлечение) исторических метаданных.