web-dev-qa-db-fra.com

utilise get_posts pour obtenir des données de champ personnalisées, mais dans un tableau

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.

1
chowwy

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);
1
Vinod Dalvi

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 ),
    );
}
1
Charles Clarkson