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’]));
}
}
この関数の呼び出し方法を省略しました。 save_post
アクションに追加されていると思います。
このアクションは、現在の投稿IDを引数として渡します。親投稿IDではなく、リビジョンIDになるリビジョンの場合。 したがって、私が見るように、改訂のために追加のデータを保存する理由はありません(その複製セットを作成します)。
更新
スクラッチ。
ソースコードを調べました。どうやら*_post_meta
関数は、リビジョン投稿IDが渡されると、自動的に親投稿IDに変更されます。したがって、リビジョンを変更していると考えて、元の投稿を変更する可能性があります。
postmeta
テーブルを見ると、ポストリビジョンのメタデータが保存されていないようです。私はそれがこのようである必要はないと思います:リビジョンのために追加のメタデータを保存することもプラグインに役立ついくつかのユースケースを考えることができます。例として、おそらくウェブショップの例を見てみましょう。最初に価格が$ 20の製品を作成し、その後価格を$ 10に下げると、古いテキストフィールドが改訂として保存されますが、古い価格フィールドは消去されます。 。価格の履歴も保存しておくと便利です。
メタデータを処理する関数は、メタデータのリビジョンでの作業を完全にはサポートしていないため、プラグインからのサポートはあまり期待できません。ただし、プラグインを作成する場合は、履歴メタデータの保存(および取得)がどのように役立つかを覚えておいてください。