【发布时间】:2020-04-08 04:56:49
【问题描述】:
我需要创建一个按年份分组的新闻文章标题手风琴列表。到目前为止,手风琴面板的内容是正确的,每个面板都显示了当年的所有新闻帖子。
问题在于,根据当年的文章数量,我获得了多年的多个面板。例如,2003 年有三篇新闻文章,所以我得到了 2003 年的三个手风琴面板,每个面板都有那年的三篇相应的新闻文章。 2004 年我得到了一个手风琴面板,因为 2004 年只有一篇文章。2006 年有六篇文章,所以我得到了六个面板,每个面板都包含六篇文章。
我需要怎么做才能只获得一个包含正确数量标题的面板?
这是我的 SQL:
$newsposts = $wpdb->get_results("
SELECT YEAR(wp_posts.post_date) AS post_year, wp_posts.post_title, wp_posts.ID AS post_id
FROM wp_posts LEFT JOIN wp_term_relationships ON
(wp_posts.ID = wp_term_relationships.object_id)
WHERE wp_term_relationships.term_taxonomy_id = 3
AND wp_posts.post_status = 'publish'
ORDER BY post_date
", OBJECT );
这是我的标记:
<?php foreach($newsposts as $year) : ?> <?php //print_r($year); ?>
<li class="accordion-item" data-accordion-item>
<a href="#" class="accordion-title"><?php echo $year->post_year; ?></a>
<div class="accordion-content" data-tab-content>
<?php foreach($newsposts as $post) : ?> <?php //print_r($post); ?>
<?php // Continue unless years match
if ( $post->post_year != $year->post_year ) continue; ?>
<a href="<?php the_permalink($post->post_id); ?>"><?php echo $post->post_title; ?></a><br/>
<?php endforeach; //$posts ?>
</div>
</li>
<?php endforeach; //$year ?>
</ul>
不知何故,我需要将第一个 foreach 限制为仅代表每年一次。我将不胜感激。
【问题讨论】: