使用扭曲保存自定义Metabox数据

时间:2013-01-30 作者:The Maniac

我有不止几个元数据库与自定义帖子类型一起使用,我遇到了一个问题,我的数据没有按预期保存。

下面是代码的相关部分,它位于连接到的函数中save_post.

// Loop through our custom metabox post data
foreach ($_POST[\'product\'] as $key => $value) {
    // Clear the previous featured product if it needed
    if ($key == \'homefeature\' && $value == \'on\') {
        $wpdb->query(
            "
            UPDATE      $wpdb->postmeta
            SET         meta_value = \'off\'
            WHERE       meta_key = \'the_prefix_homefeature\'
                        AND meta_value = \'on\'
            "
        );
    }

    // Update meta
    update_post_meta($post_ID, \'the_prefix_\' . $key, $value);
}
这个查询似乎工作得很好(我在Wordpress之外进行了测试),但最终该产品不会被标记为homefeature. 最奇怪的是如果我die 在上述循环完成后,它似乎按预期工作。

Wordpress似乎正在缓存查询或其他内容。如果你能帮我弄清楚为什么会发生这种情况,那就太好了,如果你需要更多的信息/代码,请告诉我。

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

我知道保存帖子时会调用save\\u post两次。die()解决了您的问题,这表明第二个调用可能正在撤消第一个调用?

save\\u post也将在autosave上调用,因此您可能也希望消除这些。

结束

相关推荐

从Metabox返回值的函数

我已经使用Meta Box插件为我的cpt books创建了两个自定义Metabox,我对如何输出值感到困惑。这些值需要在我的一个模板中的特定位置使用。我试过使用get_post_custom() 和get_post_meta() 但无法使其工作。这是我的metabox模板:add_action(\'admin_init\', \'rw_register_meta_boxes\'); function rw_register_meta_boxes() { $prefix