почему я не должен сохранять метаданные, когда это пересмотр


Я читаю книгу о 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’]));
    }
}
 1
Author: Pikamander2, 2010-09-11

2 answers

Вы не указали, как называется эта функция. Я предполагаю, что это добавлено в действие save_post.

Это действие передает текущий идентификатор записи в качестве аргумента. В случае пересмотра это будет идентификатор редакции, а не идентификатор родительской записи. Итак, как я вижу, нет причин сохранять дополнительные данные для пересмотра (создавая дублирующий набор).

Обновление.

Вычеркните это.

Я просмотрел исходный код. По-видимому, функции *_post_meta автоматически изменятся на родительские идентификатор записи, если передан идентификатор записи ревизии. Таким образом, вы можете изменить исходное сообщение, думая, что изменяете редакцию.

 4
Author: Rarst, 2010-09-11 16:49:54

Когда я смотрю на свою таблицу postmeta, кажется, что метаданные никогда не сохраняются для изменений после публикации. Я не думаю, что это должно быть так: я могу придумать некоторые варианты использования, в которых плагинам было бы полезно также сохранять дополнительные метаданные для изменений. Возьмите свой пример, возможно, из примера интернет-магазина: если я сначала создам продукт по цене 20 долларов, а затем уменьшу цену до 10 долларов, это, вероятно, сохранит старые текстовые поля в качестве редакции, но сотрет старые поля цен. Это может быть полезно также сохранить историю цен.

Я предполагаю, что функции, которые имеют дело с метаданными, не полностью поддерживают работу с изменениями метаданных, поэтому нам пока не следует ожидать большой поддержки от плагинов. Но, если вы создадите плагин, имейте в виду, как может быть полезно сохранение (и извлечение) исторических метаданных.

 1
Author: Jan Fabry, 2010-09-11 14:49:31