jiewmeng
  • 0
Учитель

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

  • 0

Я читаю книгу о 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’]));
    }
}
Share
  1. Вы не указали, как вызывается эта функция. Я предполагаю, что это добавлено к save_post действию.

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

    Обновлять.

    Сотрите это.

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

    • 0
    • да save_post, я вижу точку. являются ли ревизии копиями данных сообщения каждый раз, когда я сохраняю сообщение, чтобы оно стало чем-то вроде вики? если это так, я думаю, он хранит дубликат строки, не будет ли это очень быстро раздувать базу данных?

      • 0
    • @jiewmeng: Изменения действительно являются историческими копиями вашего поста. Они используются для хранения предыдущих версий, если вы редактируете уже сохраненный пост, а также для автосохранения во время редактирования.

      • 0
    • Да, ревизии могут раздувать базу данных. Существует константа, которая определяет, следует ли (или сколько) сохранять ревизии для каждого сообщения (не считая одной для автоматического сохранения). См. codex.wordpress.org/Revision_Management

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

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

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

    • 0

Оставить ответ

You must login to add an answer.