J'ai lancé une requête get_posts dans WordPress et je dois extraire une paire de champs personnalisés et les regrouper dans un seul tableau. La requête get_posts fournit un tableau de publications, mais lorsque j'utilise foreach pour accéder aux champs personnalisés, des tableaux distincts sont générés pour chaque résultat.
La requête
$c_query = get_posts(
array(
'post_type' => 'page',
'paged' => get_query_var('paged'),
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => 'concert_date',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => array('rock.php', 'pop.php', 'jazz.php'),
'compare' => 'IN'
)
array(
'key' => 'concert_date'
'value' => date('m/d/Y')
)
)
)
);
Pour chaque
Pour accéder à la date du concert, j'ai utilisé foreach:
foreach($c_query as $post) : setup_postdata($post);
$c_query['concert_date'] = $concert_date = get_post_meta(get_the_ID(),
'concert_date', true);
$c_query['concert_city'] = $concert_date = get_post_meta(get_the_ID(),
'concert_city', true);
endforeach;
et le résultat extrait les données correctes, mais j'obtiens des tableaux séparés pour chaque date de concert et ville paire (à cause de foreach):
Tableaux résultants
Array ( [0] => 01-11-2012 [1] => New York)
Array ( [0] => 03-23-2013 [1] => Boston)
Array ( [0] => 06-09-2014 [1] => London)
Que puis-je faire pour que ces tableaux de résultats forment un seul grand tableau? Essayer d'obtenir un tableau de la date du concert et des paires de villes.
Vous pouvez modifier votre boucle foreach comme suit pour obtenir la date du concert et la paire de villes dans un tableau multidimensionnel unique comme suit.
$concert_query = array();
$i = 0;
foreach($c_query as $post) : setup_postdata($post);
$concert_query[$i]['concert_date'] = get_post_meta(get_the_ID(), 'concert_date', true);
$concert_query[$i]['concert_city'] = get_post_meta(get_the_ID(), 'concert_city', true);
$i ++;
endforeach;
print_r($concert_query);
Vous ne devriez pas avoir à configurer les données de publication sur $post
à chaque fois. Vous avez déjà l'ID de poste et get_post_meta()
ne dépend pas de la variable $post
.
$concerts = array();
foreach ( $c_query as $concert ) {
$concerts[] = array(
'concert_date' => get_post_meta( $concert->ID, 'concert_date', true ),
'concert_city' => get_post_meta( $concert->ID, 'concert_city', true ),
);
}