不要在主页和任何类型的存档页上运行自定义查询来代替主查询。这总是会引起问题。如果需要更改主查询,请使用pre_get_posts
这样做。
要解决此问题,您需要从类别页面中删除代码并返回默认循环。您的分类页面中应该只包含以下内容
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
// YOUR MARKUP AND TEMPLATE TAGS
}
}
这将导致您在按发布日期排序的类别帖子上看到所有类别帖子。正如我所说,您现在需要使用
pre_get_posts
更改类别页面上的主查询以设置自定义排序和分页
您需要在中添加以下内容functions.php
add_action( \'pre_get_posts\', function ( $q )
{
if ( !is_admin() // Only target the front end queries
&& $q->is_main_query() // Targets the main query only
&& $q->is_category() // Only target category pages
) {
$q->set( \'posts_per_page\', 10 );
$q->set( \'meta_key\', \'custom_key\' );
$q->set( \'meta_value\', \'\' );
$q->set( \'meta_compare\', \'!=\' );
$q->set( \'orderby\', \'meta_value_num\' );
$q->set( \'ignore_sticky_posts\', 1 );
}
});
你不应该看到每页10篇文章
meta_value_num
从自定义字段
custom_key
在您的分类页面上从高到低排序