wpdb->delete() i WordPress 3.4

En av nyheterna i WordPress 3.4 är att metoden delete har tillkommit till wpdb-klassen. Tidigare fanns av någon anledning bara insert och update.
Enkelt exempel på hur den kan användas:
Vad jag vet finns det ingen inbyggd funktion för att ta bort alla förekomster av ett custom field, före WordPress 3.4 var man tvungen att göra en query direkt i databasen för att få till den funktionaliteten.

  function delete_post_meta_for_all( $meta_key ) {  
     global $wpdb; 
     return $wpdb->query( 
        $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = %s ",
           $meta_key ) ); 
  } 

Tyvärr måste man fortfarande göra något liknande, men syntaxen är lite mer ”WordPress”:

function delete_post_meta_for_all( $meta_key ) { 
   global $wpdb; 
   $result = $wpdb->delete( "$wpdb->postmeta" , 
      array( "meta_key" => $meta_key) , array( '%s' ) ); 
}

Syntax:

function delete( $table, $where, $where_format = null )
$table: table name
$where: A named array of WHERE clauses (in column => value pairs). Multiple clauses will be joined with ANDs. Both $where columns and $where values should be ”raw”.
$where_format Optional: An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where. A format is one of ’%d’, ’%f’, ’%s’ (integer, float, string). If omitted, all values in $where will be treated as strings unless otherwise specified in wpdb::$field_types.
return int|false The number of rows updated, or false on error.

Mer info här

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *