0

「awardyear」のカスタム分類法を持つ「awards」のワードプレスカスタム投稿タイプがあります。それらをすべてリストするクエリを作成しようとしていますが、それらを年ごとにグループ化し、見出しに年を含めます。たとえば、2010 年のすべての賞はグループ化され、ヘッダーとして「2010」が付けられます。これは可能ですか?それらをすべてリストアップすることはできますが、現在はすべての年の下にリストアップしています。これが私の現在のクエリです:

$taxonomy = 'awardyear';
$queried_term = get_query_var($taxonomy);
$terms = get_terms($taxonomy, 'slug='.$queried_term);

$args = array( 
'post_type' => 'awards',
'posts_per_page' => -1 ,
'awardyear' => $term->name,
'order_by' => 'awardyear',
'order' => 'ASC'    
 );

if ($terms) {
  foreach($terms as $term) {
    echo '<span class="award_year">' . $term->name . '</span> ';
    query_posts( $args );

// The Loop
while ( have_posts() ) : the_post();
    echo '<li style="list-style: none;">';
    echo '<a href="';
    the_permalink();
    echo '">';
    the_title();
    echo '</a>';
    echo '</li>';
endwhile;

// Reset Query
wp_reset_query();

  }
}

出力例は次のとおりです。

2010
Award Example Number 1
Award Example Number 2

2011
Award Example Number 1
Award Example Number 2
Award Example Number 3
Award Example Number 4

2012
Award Example Number 1
Award Example Number 2
Award Example Number 3
4

2 に答える 2

1

あなたの問題は、定義される$args['awardyear']前に一度設定$termされるため、それ自体が未定義になることです。の定義から削除し、ループの先頭に$args配置します。そうすれば、それぞれの過去に正しく設定されます。$args['awardyear'] = $term->name;foreach

query_posts()この種の の使用は一般的に嫌われていることに注意してください。その関数の Codex エントリを参照してください。

于 2013-03-26T04:50:02.070 に答える
0

実際に目的を効果的に達成するには、ポスト メタの方が適しているため、別の方法を検討することをお勧めします。

タクソノミを実際に使用するかどうかに関係なく、タクソノミ列を取得するクエリに基づいて行う必要があり、そこから表示できます。

参考:http ://scribu.net/wordpress/sortable-taxonomy-columns.html

于 2013-03-17T05:54:24.733 に答える