Il modo corretto per farlo è A:sfuggire a tutti quei $_POST superglobali.
e B. Scrivi una query come mostrato di seguito.
Ecco la tabledef per wp_postmeta:
http://codex.wordpress.org/Database_Description #Tabella:_wp_postmeta
Poiché meta_id è una chiave primaria auto_increment, tu non lo fornisce, MySQL lo fa.
//$meta_id = mysql_real_escape_string($_POST['meta_id']); <<-- not needed.
$post_id = mysql_real_escape_string($_POST['post_id']);
$meta_key = mysql_real_escape_string($_POST['meta_key']);
$meta_value = mysql_real_escape_string($_POST['meta_value']);
$sql=" INSERT INTO wp_postmeta
(post_id, meta_key, meta_value)
VALUES
('$post_id','$meta_key','$meta_value') "; //<<-- don't forget the quotes!
if ($result = mysql_query($sql)) {
//You can get the new meta_id using:
$new_meta_id = mysql_insert_id($result);
} else {
die ("could not insert ".mysql_error());
}