WordPress.org

Make WordPress Core

Changeset 18500


Ignore:
Timestamp:
08/03/11 16:48:37 (3 years ago)
Author:
ryan
Message:

Turn delete_meta() , get_post_meta_by_id(), update_meta(), delete_post_meta_by_key() into wrappers around the metadata API. Add back compat *_postmeta actions to metadata API. Props jgadbois. see #18196

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/post.php

    r18498 r18500  
    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 
     
    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 
     
    783765 */ 
    784766function update_meta( $meta_id, $meta_key, $meta_value ) { 
    785     global $wpdb; 
    786  
    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; 
     767    $meta_key = stripslashes( $meta_key ); 
     768    $meta_value = stripslashes_deep( $meta_value ); 
     769 
     770    return update_metadata_by_mid( 'post', $meta_id, $meta_value, $meta_key ); 
    806771} 
    807772 
  • trunk/wp-includes/meta.php

    r18494 r18500  
    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 ); 
     
    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; 
     
    205211    $_meta_value = $meta_value; 
    206212    $meta_value = maybe_serialize( $meta_value ); 
    207  
     213         
    208214    $query = $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s", $meta_key ); 
    209215 
     
    218224        return false; 
    219225 
     226    if ( $delete_all ) 
     227        $object_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $type_column FROM $table WHERE meta_key = %s", $meta_key ) ); 
     228 
    220229    do_action( "delete_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value ); 
     230     
     231    if ( 'post' == $meta_type ) 
     232        do_action( 'delete_postmeta', $meta_ids ); 
    221233 
    222234    $query = "DELETE FROM $table WHERE $id_column IN( " . implode( ',', $meta_ids ) . " )"; 
     
    227239        return false; 
    228240 
    229     wp_cache_delete($object_id, $meta_type . '_meta'); 
     241    if ( $delete_all ) { 
     242        foreach ( (array) $object_ids as $o_id ) { 
     243            wp_cache_delete($o_id, $meta_type . '_meta'); 
     244        } 
     245    } else { 
     246        wp_cache_delete($object_id, $meta_type . '_meta'); 
     247    } 
     248 
    230249    // users cache stores usermeta that must be cleared. 
    231250    if ( 'user' == $meta_type ) 
     
    233252 
    234253    do_action( "deleted_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value ); 
     254     
     255    if ( 'post' == $meta_type ) 
     256        do_action( 'deleted_postmeta', $meta_ids ); 
    235257 
    236258    return true; 
     
    382404 
    383405        do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 
     406 
     407        if ( 'post' == $meta_type ) 
     408            do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 
    384409         
    385410        // Run the update query, all fields in $data are %s, $where is a %d. 
     
    395420        do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 
    396421 
     422        if ( 'post' == $meta_type ) 
     423            do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 
     424 
    397425        return $result; 
    398426    } 
     
    437465        do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value ); 
    438466 
     467        if ( 'post' == $meta_type ) 
     468            do_action( 'delete_postmeta', $object_id ); 
     469 
    439470        // Run the query, will return true if deleted, false otherwise 
    440471        $result = (bool) $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE $id_column = %d LIMIT 1;", $meta_id ) ); 
     
    442473        // Clear the caches. 
    443474        wp_cache_delete($object_id, $meta_type . '_meta'); 
    444          
     475 
    445476        // Users cache stores usermeta that must be cleared. 
    446477        if ( 'user' == $meta_type ) 
     
    448479 
    449480        do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value ); 
     481 
     482        if ( 'post' == $meta_type ) 
     483            do_action( 'delete_postmeta', $object_id ); 
    450484 
    451485        return $result; 
  • trunk/wp-includes/post.php

    r18472 r18500  
    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 
Note: See TracChangeset for help on using the changeset viewer.