0

我正在尝试显示按标题字母顺序排列的帖子,仅针对某个类别。我尝试按照Codex中的说明进行操作,但我很困惑,因为模板页面中的代码看起来与 Codex 中的示例完全不同。

我有一个名为“设计师”的类别,所以我复制了 category.php 并将其命名为 category-designers.php。在里面,有一个 loop-designers.php 的调用

在类别设计器中,我尝试了 Codex 的代码:

$args = array( 'posts_per_page' => -1, 'orderby'=> 'title', 'order' => 'ASC' );
$glossaryposts = get_posts( $args ); 
foreach( $glossaryposts as $post ) :    setup_postdata($post); 
    get_template_part('loop', 'designers');
endforeach;

但是输出很奇怪:首先它显示按日期排序的帖子列表,然后显示相同的帖子,但按字母顺序排列,只是按字母顺序排列的列表重复次数与帖子一样多(在这种情况下为 9)。

我知道我一定做错了什么,但找不到使用 的示例get_template_part,它们都使用 aforeach就像在 Codex 中一样。

感谢您的回答。

已编辑:在我的中,loop-designers.php我与 中的基本相同loop.php,但进行了修改,因此该类别没有显示日期、标签或其他信息。我在这里粘贴了 HTML http://jsfiddle.net/6qdvF/

4

1 回答 1

0

使用那里的代码,您可以在循环中包含一个循环。与 foreach 循环一起使用get_posts()本质上是一个 WP 循环,那么您所包含get_template_part('loop', 'designers');的很可能是另一个循环。

您可以get_template_part('loop', 'designers');从您的一段代码中删除并粘贴您的标签以获得所需的内容,(例如the_content(); the_title; the_excerpt;等),或者您可以创建一个新的循环,wp_query()如下例所示。

<?php 
    $query = new WP_Query(array('post_type' => 'post', 'cat' => 1, 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC'));
    while ( $query->have_posts() ) : $query->the_post();
?>

    // put your content template tags here

<?php endwhile; wp_reset_postdata(); ?>

此循环将查询“帖子”和类别 1。您可以通过将单词更改为帖子类型名称来更改'post_type' => 'post',为查询其他帖子类型。post或将类别编号更改为您要查询的所需类别 ID。

于 2013-08-14T15:30:02.137 回答