web-dev-qa-db-fra.com

Utilisez wp_update_user pour mettre à jour une colonne personnalisée dans la table wp_users

J'ai ajouté une nouvelle colonne à la table wp_users. Maintenant, j'aimerais le mettre à jour avec wp_update_user(); cependant, bien que la méthode ne renvoie aucune erreur, aucune valeur n'est en cours de sauvegarde. wp_get_current_user renvoie la nouvelle colonne, mais la valeur est vide.

Est-ce que cela signifie que wp_update_user() ne peut gérer que des colonnes standard? Je n'ai rien trouvé à ce sujet dans la documentation.

Je connais la table méta clé-valeur pour les colonnes définies par l'utilisateur, mais il serait plus pratique d'avoir un nouveau champ dans la table utilisateur dans mon scénario.

Le code est simple:

$user_info = wp_get_current_user();
$user_info->creditBalance = 44;
$user_id = wp_update_user( $user_info ); // doesn't seem to update the creditBalance
1
Bart Juriewicz

Il n'est pas recommandé d'ajouter ou de supprimer des colonnes dans/depuis les tables principales dans WordPress. Il n'y a aucune garantie que la toute prochaine mise à jour ne change pas le comportement de cette table, ni même écrase votre colonne. Votre meilleure approche consiste à utiliser les métadonnées comme vous l'avez mentionné.

Toutefois, si vous avez besoin de le faire pour une raison quelconque, vous pouvez le faire en écrivant votre propre requête SQL.

// Get current user's data
$user_info = wp_get_current_user();
// Get its ID
$id = $user_info->ID;
// Set the credit balance
$creditBalance = 44;

// Update the custom column
function update_custom_column( $id, $creditBalance ) {
    global $wpdb;   
    $wpdb->query( 
        $wpdb->prepare( "
            UPDATE $wpdb->users 
            SET creditBalance = %d 
            WHERE ID = %d",
            $creditBalance, 
            $id
        ) 
    );
}

Cependant, travailler avec une base de données est délicat et peut être dangereux. Faites attention.

1
Jack Johansson