WordPress.org

Make WordPress Core

Ticket #18196: 18196.diff

File 18196.diff, 5.8 KB (added by ryan, 3 years ago)

Retain stripslashes in update_meta()

  • wp-includes/post.php

     
    14971497 * @return bool Whether the post meta key was deleted from the database 
    14981498 */ 
    14991499function delete_post_meta_by_key($post_meta_key) { 
    1500         if ( !$post_meta_key ) 
    1501                 return false; 
    1502  
    1503         global $wpdb; 
    1504         $post_ids = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key)); 
    1505         if ( $post_ids ) { 
    1506                 $postmetaids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key ) ); 
    1507                 $in = implode( ',', array_fill(1, count($postmetaids), '%d')); 
    1508                 do_action( 'delete_postmeta', $postmetaids ); 
    1509                 $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id IN($in)", $postmetaids )); 
    1510                 do_action( 'deleted_postmeta', $postmetaids ); 
    1511                 foreach ( $post_ids as $post_id ) 
    1512                         wp_cache_delete($post_id, 'post_meta'); 
    1513                 return true; 
    1514         } 
    1515         return false; 
     1500        return delete_metadata( 'post', null, $post_meta_key, '', true ); 
    15161501} 
    15171502 
    15181503/** 
  • wp-includes/meta.php

     
    149149        } 
    150150 
    151151        do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 
     152         
     153        if ( 'post' == $meta_type ) 
     154                do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value );    
    152155 
    153156        $wpdb->update( $table, $data, $where ); 
    154157 
     
    158161                clean_user_cache($object_id); 
    159162 
    160163        do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 
     164         
     165        if ( 'post' == $meta_type ) 
     166                do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value );           
    161167 
    162168        return true; 
    163169} 
     
    218224                return false; 
    219225 
    220226        do_action( "delete_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value ); 
    221  
     227         
     228        if ( 'post' == $meta_type ) 
     229                do_action( 'delete_postmeta', $meta_ids ); 
     230         
    222231        $query = "DELETE FROM $table WHERE $id_column IN( " . implode( ',', $meta_ids ) . " )"; 
    223  
     232         
    224233        $count = $wpdb->query($query); 
    225234 
    226235        if ( !$count ) 
     
    232241                clean_user_cache($object_id); 
    233242 
    234243        do_action( "deleted_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value ); 
     244         
     245        if ( 'post' == $meta_type ) 
     246                do_action( 'deleted_postmeta', $meta_ids ); 
    235247 
    236248        return true; 
    237249} 
     
    381393                $where[$id_column] = $meta_id; 
    382394 
    383395                do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 
     396 
     397                if ( 'post' == $meta_type ) 
     398                        do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 
    384399                 
    385400                // Run the update query, all fields in $data are %s, $where is a %d. 
    386401                $result = (bool) $wpdb->update( $table, $data, $where, '%s', '%d' ); 
     
    394409 
    395410                do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 
    396411 
     412                if ( 'post' == $meta_type ) 
     413                        do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 
     414 
    397415                return $result; 
    398416        } 
    399417         
     
    436454 
    437455                do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value ); 
    438456 
     457                if ( 'post' == $meta_type ) 
     458                        do_action( 'delete_postmeta', $object_id ); 
     459 
    439460                // Run the query, will return true if deleted, false otherwise 
    440461                $result = (bool) $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE $id_column = %d LIMIT 1;", $meta_id ) ); 
    441462 
     
    448469 
    449470                do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value ); 
    450471 
     472                if ( 'post' == $meta_type ) 
     473                        do_action( 'delete_postmeta', $object_id ); 
     474 
    451475                return $result; 
    452476 
    453477        } 
  • wp-admin/includes/post.php

     
    701701 * @return unknown 
    702702 */ 
    703703function delete_meta( $mid ) { 
    704         global $wpdb; 
    705         $mid = (int) $mid; 
    706  
    707         $post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); 
    708  
    709         do_action( 'delete_postmeta', $mid ); 
    710         wp_cache_delete($post_id, 'post_meta'); 
    711         $rval = $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); 
    712         do_action( 'deleted_postmeta', $mid ); 
    713  
    714         return $rval; 
     704        return delete_metadata_by_mid( 'post' , $mid ); 
    715705} 
    716706 
    717707/** 
     
    742732 * @return unknown 
    743733 */ 
    744734function get_post_meta_by_id( $mid ) { 
    745         global $wpdb; 
    746         $mid = (int) $mid; 
    747  
    748         $meta = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); 
    749         if ( empty($meta) ) 
    750                 return false; 
    751         if ( is_serialized_string( $meta->meta_value ) ) 
    752                 $meta->meta_value = maybe_unserialize( $meta->meta_value ); 
    753         return $meta; 
     735        return get_metadata_by_mid( 'post', $mid ); 
    754736} 
    755737 
    756738/** 
     
    782764 * @return unknown 
    783765 */ 
    784766function update_meta( $meta_id, $meta_key, $meta_value ) { 
    785         global $wpdb; 
     767        $meta_key = stripslashes( $meta_key ); 
     768        $meta_value = stripslashes_deep( $meta_value ); 
    786769 
    787         $meta_key = stripslashes($meta_key); 
    788  
    789         if ( '' === trim( $meta_value ) ) 
    790                 return false; 
    791  
    792         $post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $meta_id) ); 
    793  
    794         $meta_value = maybe_serialize( stripslashes_deep( $meta_value ) ); 
    795         $meta_id = (int) $meta_id; 
    796  
    797         $data  = compact( 'meta_key', 'meta_value' ); 
    798         $where = compact( 'meta_id' ); 
    799  
    800         do_action( 'update_postmeta', $meta_id, $post_id, $meta_key, $meta_value ); 
    801         $rval = $wpdb->update( $wpdb->postmeta, $data, $where ); 
    802         wp_cache_delete($post_id, 'post_meta'); 
    803         do_action( 'updated_postmeta', $meta_id, $post_id, $meta_key, $meta_value ); 
    804  
    805         return $rval; 
     770        return update_metadata_by_mid( 'post', $meta_id, $meta_value, $meta_key ); 
    806771} 
    807772 
    808773//