web-dev-qa-db-fra.com

delete_user_meta: comment supprimer toutes les métadonnées d'un utilisateur donné (sans SQL)

sur un multisite je supprime un utilisateur avec:

wpmu_delete_user ($ user_id);

Bien, mais à moins que je ne sois confus, cela ne supprime pas les métadonnées pouvant exister pour cet utilisateur ...

delete_user_meta () semble être la fonction pour ce faire, mais je ne vois pas comment supprimer TOUTES les métadonnées sans entrer les métakeys. (Je voulais éviter d'écrire une requête DELETE directement sur la table wp_usermeta)

Merci pour votre aide Pierre

1
Pierre

Oui, cela supprime l’usermeta. Voici le code qu'il utilise :

$meta = $wpdb->get_col( $wpdb->prepare(
                      "SELECT umeta_id FROM $wpdb->usermeta WHERE user_id = %d", $id ) );
foreach ( $meta as $mid )
    delete_metadata_by_mid( 'user', $mid );

Le code est identique dans wp_delete_user (pour le cas non multisite) et ils utilisent le même modèle pour supprimer les métadonnées de taxonomie, les métadonnées de publication, etc.

3
Rup