web-dev-qa-db-ja.com

リビジョンのときにメタデータを保存してはいけない理由

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
Jiew Meng

この関数の呼び出し方法を省略しました。 save_postアクションに追加されていると思います。

このアクションは、現在の投稿IDを引数として渡します。親投稿IDではなく、リビジョンIDになるリビジョンの場合。 したがって、私が見るように、改訂のために追加のデータを保存する理由はありません(その複製セットを作成します)。

更新

スクラッチ。

ソースコードを調べました。どうやら*_post_meta関数は、リビジョン投稿IDが渡されると、自動的に親投稿IDに変更されます。したがって、リビジョンを変更していると考えて、元の投稿を変更する可能性があります。

3
Rarst

postmetaテーブルを見ると、ポストリビジョンのメタデータが保存されていないようです。私はそれがこのようである必要はないと思います:リビジョンのために追加のメタデータを保存することもプラグインに役立ついくつかのユースケースを考えることができます。例として、おそらくウェブショップの例を見てみましょう。最初に価格が$ 20の製品を作成し、その後価格を$ 10に下げると、古いテキストフィールドが改訂として保存されますが、古い価格フィールドは消去されます。 。価格の履歴も保存しておくと便利です。

メタデータを処理する関数は、メタデータのリビジョンでの作業を完全にはサポートしていないため、プラグインからのサポートはあまり期待できません。ただし、プラグインを作成する場合は、履歴メタデータの保存(および取得)がどのように役立つかを覚えておいてください。

1
Jan Fabry