我想要达到的目标:获得n
自定义分类法中的术语,按每个术语中的最新帖子排序。这将用于显示最新m
每个学期的职位。
有没有比获取所有术语的数组并循环查找每个术语中的最新帖子更好的方法?这种方法感觉不是很有效或可扩展。
Update
这是我目前为止的工作代码-这可以改进吗?$taxonomy = \'industry\'; //taxonomy name
$terms_to_display = 5; //number of terms to display
$posts_per_term = 4; // number of posts per term to display
$terms = get_terms( array(\'taxonomy\' => $taxonomy, \'hide_empty\' => true, \'fields\' => \'ids\' ) );
$news_items = [];
foreach ( $terms as $term ) {
$args = array (
\'post_type\' => \'news\',
\'posts_per_page\' => $posts_per_term,
\'orderby\' => \'date\',
\'order\' => \'DESC\',
\'tax_query\' => array (
array (
\'taxonomy\' => $taxonomy,
\'field\' => \'id\',
\'terms\' => array($term),
),
),
);
$news = new WP_Query( $args );
if ( $news->post_count == $posts_per_term ) { // ignore terms with not enough posts
$news_items[$term] = get_the_date("U", $news->posts[0]->ID); //get date of newest post in this term
}
wp_reset_query();
}
arsort ( $news_items ); //sort descending, keeping keys
$term_ids = array_keys ( array_slice($news_items, 0, $terms_to_display, true) ); //take \'n\' newest and return an array of keys (term ids)
foreach ( $term_ids as $term_id ) {
$term = get_term ( $term_id, $taxonomy );
echo "<h2>" . $term->name . "</h2>";
$args = array (
\'post_type\' => \'news\',
\'posts_per_page\' => $posts_per_term,
\'orderby\' => \'date\',
\'order\' => \'DESC\',
\'tax_query\' => array (
array (
\'taxonomy\' => $taxonomy,
\'field\' => \'id\',
\'terms\' => array($term_id),
),
),
);
$news = new WP_Query( $args );
if ( $news->have_posts() ) {
echo "<ul>";
while ( $news->have_posts() ) {
$news->the_post();
echo "<li>" . get_the_title() . "</li>";
}
echo "</ul>";
}
wp_reset_query();
}