J'essaie de récupérer des valeurs multidimensionnelles stockées dans user_meta
où la clé méta est my_posts
et le meta_value
est:
a: 3: {i: 0; s: 2: "23"; i: 1; s: 2: "20"; i: 2; s: 1: "9";}
Quelque part dans la page d'administration, je souhaite afficher la somme des publications sélectionnées qui sont stockées dans la valeur ci-dessus ....
La valeur est sérialisée. Si vous récupérez les métadonnées avec les fonctions WordPress, vous obtiendrez ces données non sérialisées et vous pourrez les parcourir (elles ressemblent à un tableau).
$somevar = get_user_meta( '99999', 'your-key', true );
Comme pour les options de WordPress, les méta de l'utilisateur sont sérialisées lorsqu'il s'agit d'un tableau ou d'un objet, les valeurs uniques sont stockées sous forme de chaîne (non sérialisées).
Appelez get_user_meta
et vous récupérerez un tableau de données au lieu d’une chaîne sérialisée. Vous n’avez pas besoin de vous sérialiser ni de vous désérialiser. Les méta-fonctions WordPress s’occupent de cela pour vous, en utilisant maybe_serialize
et maybe_unserialize
lors de l’enregistrement et de la définition de méta.
Ceci est similaire à la gestion des options dans WP et fait à peu près la même chose, je l’ai couvert en répondant " Tableau des options du plug-in, les données sont-elles sérialisées "..
Pour répondre plus directement à la question, pour additionner les valeurs du tableau, utilisez array_sum
, comme suit .. (basé sur l'exemple var précédent)
if( !empty( $somevar ) )
$sum = array_sum( $somevar );
Ou..
$sum = 0;
if( !empty( $somevar ) ) {
foreach( $somevar as $int )
$sum = $sum + $int;
}
En supposant qu'il s'agisse d'un simple tableau de paires clé => valeur, l'une ou l'autre approche devrait fonctionner.
Solution PHP:
$tmp = 'a:3:{i:0;s:2:"23";i:1;s:2:"20";i:2;s:1:"9";}';
echo sum_array(unserialize($tmp));
Aussi ... transformez votre méta-valeur en tableau et examinez la fonction wp_count_posts()
et son utilisation dans wp-admin/edit-form-advanced.php pour un exemple.