Je ne parviens pas à récupérer les valeurs post_meta que j'ai stockées dans un tableau. J'utilise ceci pour stocker le tableau:
add_action( 'comment_post', 'add_food', 1 );
function add_food(){
global $post;
$testvalues = array('bread', 'cake');
update_post_meta($post->ID, 'food', $testvalues);
}
et ceci pour le récupérer:
add_filter('the_content', 'print_food');
function print_food($content){
global $post;
$custom_fields = get_post_custom($post->ID);
$food_field = $custom_fields['food'];
$content .= $food_field[0];
return $content;
}
cependant, ceci est ajouté au contenu de ma page:
a: 2: {i: 0; s: 5: "pain"; i: 1; s: 4: "gâteau";}
La technique fonctionne bien pour le comment_meta. Qu'est-ce que je fais mal ici?
Aha! Je pense avoir trouvé votre réponse. Deux faits:
Un tableau sera sérialisé dans une chaîne.
Si la valeur est true, la fonction renvoie un seul résultat, sous forme de chaîne. Si la valeur est false ou non définie, la fonction renvoie un tableau des champs personnalisés. Ce n'est pas intuitif. Par exemple, si vous extrayez un tableau sérialisé avec cette méthode, vous voulez que $ single soit vrai pour obtenir en réalité un tableau non sérialisé . Si vous transmettez false ou si vous le laissez de côté, vous aurez un tableau de 1 et la valeur à l'index 0 sera la chaîne sérialisée. (emphase ajoutée)
Par conséquent, cet extrait de code [non testé] devrait vous fournir votre tableau de nourriture sous forme de tableau plutôt que de chaîne sérialisée.
$food_field = get_post_meta( $post->ID, 'food', true );