lire un livre sur wordpress ... désolé si je pose trop de questions à la fois mais je suis nouveau et confus
pourquoi l'auteur n'enregistre-t-il pas toujours les données dans la boîte de métadonnées lorsqu'il s'agit d'une révision. juste au cas où ce n'est pas clair, ce à quoi je fais référence par la boîte de métadonnées est celui ajouté par 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’]));
}
}
Vous avez omis comment cette fonction est appelée. Je suppose qu'il est ajouté à l'action save_post
.
Cette action transmet l'ID de publication actuel comme argument. En cas de révision, ce serait l'ID de révision et non l'ID de publication parent. Donc, comme je le vois, il n'y a aucune raison d'enregistrer des données supplémentaires pour la révision (en créant un ensemble en double).
Mise à jour.
Grattez ça.
J'ai regardé le code source. Apparemment, les fonctions *_post_meta
Changeront automatiquement en ID de publication parent si l'ID de publication de révision est passé. Vous pouvez donc modifier la publication d'origine, en pensant que vous modifiez la révision.
Lorsque je regarde ma table postmeta
, il semble qu'aucune métadonnée ne soit jamais enregistrée pour les révisions de publication. Je ne pense pas que cela doive être ainsi: je peux penser à certains cas d'utilisation où il serait utile que les plugins enregistrent également des métadonnées supplémentaires pour les révisions. Prenez votre exemple, probablement à partir d'un exemple de boutique en ligne: si je crée d'abord un produit avec un prix de 20 $, puis que je réduis le prix à 10 $, cela sauvera probablement les anciens champs de texte en tant que révision, mais cela effacera les anciens champs de prix . Il pourrait également être utile de sauvegarder l'historique des prix.
Je suppose que les fonctions qui traitent des métadonnées ne prennent pas entièrement en charge le travail avec les révisions des métadonnées, nous ne devrions donc pas encore attendre beaucoup de soutien des plugins. Mais, si vous créez un plugin, gardez à l'esprit l'utilité d'enregistrer (et de récupérer) des métadonnées historiques.