使用GET_POSTS获取自定义字段数据,但使用一个数组

时间:2013-08-25 作者:chowwy

我在WordPress中运行了一个get\\u posts查询,需要提取一对自定义字段并将它们全部放入一个数组中。get\\u posts查询提供了一个post数组,但当我使用foreach访问自定义字段时,最终会为每个结果提供单独的数组。

The Query

$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\')
                            )

                         )
                    )
                );  

Foreach

为了访问音乐会日期,我使用了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;
结果得到了正确的数据,但我得到了每个音乐会日期和城市对的单独数组(因为foreach):

Resulting Arrays

 Array ( [0] => 01-11-2012 [1] => New York) 
 Array ( [0] => 03-23-2013 [1] => Boston) 
 Array ( [0] => 06-09-2014 [1] => London) 
如何将这些结果数组合并到一个大数组中?尝试获取音乐会日期和城市配对的数组。

2 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

您可以如下更改foreach循环,以在单个多维数组中获得音乐会日期和城市对,如下所示。

$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);

SO网友:Charles Clarkson

您不必在上设置post数据$post 每次。您已经拥有帖子ID,并且get_post_meta() 不依赖于$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 ),
    );
}

结束

相关推荐

ARRAY_REPLACE抛出php_warning,但仍在工作

您好,我有一个问题可能比WordPress更像PHP问题,但在WordPress上下文中可能会很有趣,以防有人想向WP对象添加属性。我创建了一个自定义分类法,并使用一个选项为每个术语添加顺序。为了获得主题中的顺序,我使用了这两个函数:第一个函数检索术语,然后对它们进行排序: // SORT BY ORDER function cmp( $a, $b ) { if( $a->order == $b->order ){ return 0 ; }