首先:don\'t use query_posts()
, 曾经
其次,要为特定类别创建类别存档索引页面模板,请参阅the Codex entry for the Template Hierarchy:
category-{slug}.php
category-{id}.php
category.php
archive.php
index.php
因此,如果你有一个类别,\'foobar\'
, 类别ID为1
, 您可以执行以下任一操作:category-foobar.php
category-1.php
和WordPress将使用该模板呈现该类别的存档索引页面。然而,查询被践踏的原因与模板文件无关;这是因为通过使用query_posts()
.
要按特定类别筛选基于日期的存档,请使用pre_get_posts
而是:
function wpse75668_filter_pre_get_posts( $query ) {
// Only modify the main loop query
// on the front end
if ( $query->is_main_query() && ! is_admin() ) {
// Only modify date-based archives
if ( is_date() ) {
// Only display posts from category ID 1
$query->set( \'cat\', \'1\' );
}
}
}
add_action( \'pre_get_posts\', \'wpse75668_filter_pre_get_posts\' );
有关更多信息,请参阅Nacin的WordCamp演示,You Don\'t Know Query。