自定义字段值被删除

时间:2011-05-16 作者:MF1

我创建了一个自定义贴子类型:products,它还具有自定义字段:price&;运输。有时,如果我打开或刷新“编辑产品”窗口,我会丢失“价格和发货”中的值。请有人对此提出建议。

add_action(\'save_post\', \'save_details\'); 
function save_details()
{ 
    global $post;
    update_post_meta($post->ID, "price",        $_POST["price"]        );
    update_post_meta($post->ID, "shipping",     $_POST["shipping"]     );
    update_post_meta($post->ID, "long_title",   $_POST["long_title"]   );
    update_post_meta($post->ID, "upload_image", $_POST["upload_image"] );
}

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

在使用变量之前检查它们。save函数获取一个参数$post_id. 使用它。

从我的meta box class for a check box:

/**
 * Saves the content to the post meta.
 *
 * @return void
 */
public function save( $post_id )
{
    $this->is_allowed_save( $post_id ) and
        update_post_meta( $post_id, $this->vars[\'key\'],
            empty ( $_POST[ $this->vars[\'key\'] ] ) ? \'off\' : \'on\' );
}

/**
 * Checks if we should trigger the save action.
 *
 * @param  int  $post_id
 * @return bool
 */
protected function is_allowed_save( $post_id )
{
    // Check integrity, proper action and permission
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
    {
        return FALSE;
    }
    if ( ! wp_verify_nonce( $this->nonce, $this->vars[\'title\'] ) )
    {
        return FALSE;
    }
    if (    ! current_user_can( \'edit_post\', $post_id )
        and ! current_user_can( \'edit_page\', $post_id )
    )
    {
        return FALSE;
    }

    return TRUE;
}
正如你所见,DOING_AUTOSAVE 是你想要避免的事情。授权是下一点,否则任何人都可以在你的博客上发布任何东西。并在将数据插入数据库之前进行准备。

结束

相关推荐

如何避免在插件的Metabox中重新发明自定义字段轮子?

以下是场景:在我的插件中,我想在帖子/页面编辑器上显示一个元框。我希望metabox完全像WordPress的“自定义字段”metabox(添加另一个、删除、更新、自动填充下拉列表、输入新链接、AJAX magic等);有几个细微的区别:我要的不是“Name”和“Value”,而是“Target”、“Name”和“Value”与其将它们全部保存为自动显示在WP自定义字段元框中的“公共”自定义字段,不如将它们全部存储为“专用”命名空间字段中的单个多维数组。。。即。,_myplugin_custom_fiel