如何按自定义字段对帖子进行分组

时间:2013-12-07 18:04:56

标签: php wordpress group-by custom-fields

在wordpress中我有一种名为'projects'的帖子,这篇文章有一个名为'year'的自定义字段。

我想展示所有'项目',基本上是他们的名字和描述,但我想只在执行它的年份显示一次。 喜欢这个

1991
项目1 项目2
1995
project2.1
项目2.2
1996
项目A2.1
项目A2.11
1997
项目AA

我做了这个查询

<?$wp_query->query('post_type=project_post&posts_per_page=-1&orderby=year&order=ASC');?>

但是这样做我会得到这个结果

1991年项目1 1991年项目2 1995年项目2.1 1995年项目2.2
1996年项目A2.1
1997年项目AA

2 个答案:

答案 0 :(得分:1)

最后我明白了

<?php
$the_query = new WP_Query( array(
    'post_type'   => 'project_post',
    'meta_key'    => 'time',
    'orderby'     => 'meta_value'
) );
$any = '';
while ($the_query->have_posts() ) :
        $the_query->the_post();
        $temp_date = get_post_meta( get_the_ID(), 'time', true );?>
    <div class="project" >
    <?if ($temp_date != $any ) {
        $any = $temp_date;?>
    <div><?echo date( "Y", strtotime( $any));?></div>
    <?}else{?><div class="field"></div><?}?>
   <div><?the_title();?> </div>
   <div><?the_field( "region" );?></div>
   </div>
   <div style="clear:both"></div>

<?endwhile;?>

答案 1 :(得分:0)

你应该使用

'post_type=project_post&posts_per_page=-1&orderby=meta_value_num&meta_key=year'

请注意orderby=meta_value_num&meta_key=year,因此它将按自定义键排序,默认情况下为ASC,因此无需提及。

详细了解Codex