it-swarm-pt.tech

por que não devo salvar os metadados quando é uma revisão

lendo um livro sobre wordpress ... desculpe se eu fizer muitas perguntas de uma só vez, mas sou novo e confuso

por que o autor nem sempre salva os dados na caixa de metadados quando é uma revisão. caso não esteja claro, o que eu me refiro pela caixa de metadados é o adicionado por 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

Você omitiu como essa função é chamada. Suponho que ele foi adicionado a save_post açao.

Esta ação passa o ID da postagem atual como argumento. Em caso de revisão, isso seria o ID da revisão e não o ID da postagem pai. Portanto, a meu ver, não há razão para salvar dados adicionais para revisão (criando um conjunto duplicado).

Atualização.

Risca isso.

Eu olhei através do código fonte. Pelo visto *_post_meta As funções mudarão automaticamente para o ID da postagem pai, se aprovada na ID da postagem da revisão. Então você pode modificar a postagem original, pensando que está modificando a revisão.

3
Rarst

Quando olho para a minha tabela postmeta, parece que nenhum metadado é salvo para revisões posteriores. Não acho que deva ser assim: consigo pensar em alguns casos de uso em que seria útil para plugins salvar metadados adicionais para revisões também. Tomemos o seu exemplo, provavelmente a partir de um exemplo de loja virtual: se eu criar um produto com um preço de US $ 20 e depois reduzir o preço para US $ 10, isso provavelmente salvará os campos de texto antigos como uma revisão, mas apagará os campos de preços antigos . Também pode ser útil salvar um histórico dos preços.

Suponho que as funções que lidam com metadados não suportam totalmente o trabalho com revisões de metadados, portanto, não devemos esperar muito suporte dos plugins ainda. Mas, se você criar um plug-in, lembre-se de como salvar (e recuperar) metadados históricos pode ser útil.

1
Jan Fabry