web-dev-qa-db-fra.com

pourquoi ne devrais-je pas enregistrer les métadonnées quand c'est une révision

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’]));
    }
}
1
Jiew Meng

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.

3
Rarst

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.

1
Jan Fabry