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.