Je voudrais créer un bouton pour que les administrateurs puissent supprimer de la table wp_usermeta -> clé: 'ref_credit' pour tous les utilisateurs.
Existe-t-il un moyen simple et convivial d’utiliser des ressources? wp a-t-il une fonction intégrée pour cela?
J'ai trouvé ceci: http://codex.wordpress.org/Function_Reference/delete_user_meta
Mais ce n'est que pour un seul utilisateur.
Un exemple simple consisterait à obtenir tous les utilisateurs pour un rôle spécifique, à parcourir les résultats renvoyés et à appliquer la fonction delete_user_meta
pour le meta_key
donné. Mélangez et laissez mijoter une fraction de seconde et toutes les méta-utilisateurs de cette clé disparaîtront.
function say_goodby_to_the_meta(){
$role = 'subscriber';
$users = get_users('role='.$role);
foreach ($users as $user) {
delete_user_meta($user->ID, 'ref_credit');
}
}
Cet exemple est dépourvu de toute vérification d'erreur ou de réponse renvoyée, mais à la base, cela fera ce que vous avez besoin. Associez la fonction au clic d'un bouton ou appelez de manière conditionnelle et exécutez cette fonction dans des fichiers de plug-in ou de thèmes en fonction de votre cas d'utilisation.
En poussant plus loin la fonction ci-dessus et en l'associant au clic d'un bouton dans le tableau de bord, vous pouvez ajouter cette fonction à admin_init
hook.
add_action('admin_init', 'say_goodby_to_the_meta');
function say_goodby_to_the_meta(){
//check if admin, if not, lets get out of here - don't run remainder of function
if ( !current_user_can('activate_plugins') )
return;
//check that $_POST is not empty & that correct wp_nonce is supplied
//checl that $_POST['delete_credit'] is also set and passed with $_POST variables
if ( !empty($_POST)
&& check_admin_referer('delete_key','nonce_name')
&& isset( $_POST['delete_credit'] ) )
{
//set your role to apply this action to
$role = 'subscriber';
//get all users of this role (i.e. Subcribers)
$users = get_users('role='.$role);
//iterate of each user returned applying our delete_user_meta function
foreach ($users as $user) {
delete_user_meta($user->ID, 'ref_credit');
}
} else {
//return your error conditions here if you like or do further processing
echo "I say I don't even know you, I say that you're not authorized,\n
I don't understand you, so why do I judge your vars?\n
Armand Van Administrator";
}
}
Cela suppose que vous utilisez un wp_nonce_field dans votre formulaire et que votre formulaire contient également $_POST['delete_key']
en tant que l’un des $_POST
vars soumis, qu’il s’agisse d’une entrée masquée ou non. L'appel check_admin_referrer
est un moyen pratique de vérifier si votre demande provient d'une page administrative du tableau de bord.
Ceci est un très vieux post, pour tous vos futurs lecteurs, vous pouvez utiliser la fonction delete_metadata()
pour y parvenir avec beaucoup moins de temps système:
delete_metadata(
'user', // the meta type
0, // this doesn't actually matter in this call
'my_meta_key', // the meta key to be removed everywhere
'', // this also doesn't actually matter in this call
true // tells the function "yes, please remove them all"
);