查看source code 对于wp_get_archives()
, 有一个名为getarchives_join
可用于限制wp_get_archives()
到特定类别
您还需要获取当前类别ID,该ID易于使用get_queried_object_id()
您可以尝试这样的操作来显示当前查看类别的存档
add_filter( \'getarchives_join\', function ($r)
{
global $wpdb;
if( is_category() ) {
$category_id = get_queried_object_id();
$r = $wpdb->prepare( " INNER JOIN $wpdb->term_relationships AS tr ON $wpdb->posts.ID = tr.object_id AND tr.term_taxonomy_id IN (%s)", $category_id );
}
return $r;
}, 10, 2 );
编辑上一次编辑时,只需对代码添加一到两条注释。因为这是类别中的代码。php和归档。php模板,您不应该使用自定义查询。我怀疑这就是你的大问题所在。
使用pre_get_posts
更改主查询以满足您的需要。您必须删除自定义查询并返回这两个归档页面中的默认循环。
这就是您的分类页面的外观
<?php get_header(); ?>
<?php
if( have_posts() ) {
while ( have_posts() ) {
the_post();
the_content();
}
}
?>
<?php wp_get_archives( array( \'type\' => \'daily\') ); ?>
然后,在您的函数中。php,添加以下代码
add_action( \'pre_get_posts\', function ( $q )
{
if( !is_admin()
&& $q->is_main_query()
&& ( $q->is_category()
|| $q->is_date()
)
) {
$q->set( \'posts_per_page\', 1 );
}
});
这将在归档页和分类页上将每页的帖子设置为一个