Wordpress:使用自定义类别模板的字母帖子

时间:2013-08-14 12:12:05

标签: wordpress loops

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

我有一个名为“designer”的类别,因此我复制了category.php并将其命名为category-designers.php。在里面,有一个loop-designers.php

的调用

在类别设计师中,我尝试过Codex pice of code:

$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的例子,他们都使用foreach,就像在法典中一样。

感谢您的回答。

已修改:在我的loop-designers.php中,我与loop.php中的基本相同,但经过修改,因此对于该类别,不会显示日期,标签或其他信息。我在这里粘贴了HTML http://jsfiddle.net/6qdvF/

1 个答案:

答案 0 :(得分:0)

使用那段代码,你在循环中包含一个循环。将get_posts()与foreach循环一起使用本质上是一个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。