diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php
index d7765707f..29511c047 100644
--- a/wp-admin/admin-ajax.php
+++ b/wp-admin/admin-ajax.php
@@ -854,7 +854,7 @@ case 'add-meta' :
'position' => 1,
'supplemental' => array('postid' => $pid)
) );
- } else {
+ } else { // Update?
$mid = (int) array_pop(array_keys($_POST['meta']));
$key = $_POST['meta'][$mid]['key'];
$value = $_POST['meta'][$mid]['value'];
@@ -862,7 +862,7 @@ case 'add-meta' :
die('0'); // if meta doesn't exist
if ( !current_user_can( 'edit_post', $meta->post_id ) )
die('-1');
- if ( $meta->meta_value != stripslashes($value) ) {
+ if ( $meta->meta_value != stripslashes($value) || $meta->meta_key != stripslashes($key) ) {
if ( !$u = update_meta( $mid, $key, $value ) )
die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
}
diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php
index 2e22aa993..5a450382b 100644
--- a/wp-admin/includes/post.php
+++ b/wp-admin/includes/post.php
@@ -597,8 +597,7 @@ function add_meta( $post_ID ) {
return false;
wp_cache_delete($post_ID, 'post_meta');
-
- $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->postmeta (post_id,meta_key,meta_value ) VALUES (%s, %s, %s)", $post_ID, $metakey, $metavalue) );
+ $wpdb->insert( $wpdb->postmeta, array( 'post_id' => $post_ID, 'meta_key' => $metakey, 'meta_value' => $metavalue ) );
do_action( 'added_postmeta', $wpdb->insert_id, $post_ID, $metakey, $metavalue );
return $wpdb->insert_id;
@@ -690,8 +689,8 @@ function has_meta( $postid ) {
* @since unknown
*
* @param unknown_type $meta_id
- * @param unknown_type $meta_key
- * @param unknown_type $meta_value
+ * @param unknown_type $meta_key Expect Slashed
+ * @param unknown_type $meta_value Expect Slashed
* @return unknown
*/
function update_meta( $meta_id, $meta_key, $meta_value ) {
@@ -699,6 +698,8 @@ function update_meta( $meta_id, $meta_key, $meta_value ) {
$protected = array( '_wp_attached_file', '_wp_attachment_metadata', '_wp_old_slug', '_wp_page_template' );
+ $meta_key = stripslashes($meta_key);
+
if ( in_array($meta_key, $protected) )
return false;
diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php
index 7d9608c24..fae3d3e91 100644
--- a/wp-admin/includes/template.php
+++ b/wp-admin/includes/template.php
@@ -2450,8 +2450,7 @@ function meta_form() {
$key";
+ echo "\n";
}
?>
@@ -3289,7 +3288,7 @@ function find_posts_div($found_action = '') {
-
+
@@ -3299,7 +3298,7 @@ function find_posts_div($found_action = '') {