当元数据是修订版时,为什么不应该保存它

时间:2010-09-11 作者:Jiew Meng

我正在读一本关于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’]));
    }
}

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

您忽略了如何调用此函数。我想它被添加到save_post 行动

此操作将当前post id作为参数传递。如果修订是修订id,而不是父帖子id,那么在我看来,没有理由为修订保存其他数据(创建重复的数据集)

Update.

划伤那个。

我浏览了源代码。显然地*_post_meta 如果传递了修订帖子id,函数将自动更改为父帖子id。因此,您可能会修改原始帖子,认为您正在修改修订。

SO网友:Jan Fabry

当我看着我的postmeta 表中,似乎从未为后期修订保存元数据。我不认为必须这样:我可以想到一些用例,在这些用例中,插件保存额外的元数据以进行修订也很有用。以您的示例为例,可能来自一个webshop示例:如果我首先创建一个价格为20美元的产品,然后将价格降低到10美元,这可能会将旧的文本字段保存为修订,但它会删除旧的价格字段。保存价格历史记录也可能有用。

我假设处理元数据的函数不完全支持元数据的修订,因此我们还不应该期望插件提供太多支持。但是,如果创建插件,请记住保存(和检索)历史元数据是多么有用。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?