J'ai ce tableau, ci-dessous, pour définir la méta utilisateur personnalisée (lh_userbadges
) dans user_meta
, mais je ne sais pas exactement comment mettre à jour ultérieurement seulement certaines parties du tableau ...
$lh_user_badges = array(
'lh_userbadge_comments25' => '0',
'lh_userbadge_comments50' => '0',
'lh_userbadge_comments75' => '0',
'lh_userbadge_comments100' => '0',
'lh_userbadge_comments150' => '0',
'lh_userbadge_submited' => '0',
//etc.
);
update_user_meta($user_id, 'lh_userbadges', $lh_user_badges);
D'après ce que j'ai rassemblé dans d'autres questions sur le dépassement de pile ( , la mise à jour de données sérialisées dans les métadonnées de l'utilisateur est un bon exemple, MAIS elle ne fait que s'incrémenter. Je veux fixer un nombre précis juste une fois), je pense que c'est quelque chose du genre, mais je ne suis pas sûr ...
$meta_value = get_user_meta($user_id, 'lh_userbadges', false);
$meta_value['lh_userbadge_comments25'] //....?
Ainsi, par exemple, je veux juste mettre à jour l'objet lh_userbadge_comments25
de lh_userbadges
de 0 à (disons) 25, comment pourrais-je le faire? Je pense que je suis sur la bonne voie avec cette 2ème partie de code mais je ne sais pas ...
Des idées? De plus, je ne suis pas sûr que ce soit la meilleure façon de le faire, mais je pensais que cela éviterait l'encombrement de la base de données si je le faisais dans ce format plutôt que chaque type étant son propre méta-élément.
Vous pouvez simplement affecter une nouvelle valeur à la touche 1h_userbadge_comments25
.
Ainsi...
<?php
$meta_value = get_user_meta($user_id, 'lh_userbadges', false);
// just assign this key a new value
$meta_value['lh_userbadge_comments25'] = 25;
Ensuite, sauvegardez-le à nouveau.
<?php
update_user_meta( $user_id, 'lh_userbadges', $meta_value );
Que ce soit ou non de stocker toutes ces valeurs sous forme de tableau est la bonne façon de procéder. Avez-vous besoin de changer beaucoup de choses comme ça? Est-ce que toutes ces valeurs ont un sens ensemble? Sans en savoir plus sur ce que vous faites, c'est une question difficile à répondre.