2013-12-07 3 views
0

В wordpress У меня есть тип сообщения, называемого «проекты», и этот пост имеет настраиваемое поле «год».Как сгруппировать сообщение по настраиваемому полю

Я хотел бы показать все «проекты», в основном их имена и описания, но я хотел бы показать только один раз год его исполнения. Как это


проект 1
проекта2

project2.1
проект 2,2

проект A2.1
проект A2.11

проект А.

Я сделал этот запрос

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

Но при этом я получу этот результат

1991 Проект 1
1991 project2
1995 project2.1
1995 проекта 2.2
1996 проект A2.1
1997 проект AA

+0

Вы не собираетесь быть в состоянии сделать это, если вы не добавите второй настраиваемое поле из-за непоследовательной схеме именования. – MrLore

ответ

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.

+0

Да, но как печатать год один раз?

\t
\t
\t

+0

'эхо get_post_meta ($ post-> ID, 'год', правда),' –

+0

положить этот 'эхо get_post_meta ($ post-> ID, 'год', правда);' я получить всегда год для всех пост ... что я ищу для печати в поле «год» один раз –

0

Наконец я получил его

<?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;?> 
Смежные вопросы