使用自定义查询会使一切变得复杂。永远不要在主页或任何类型的存档页上用自定义查询替换主查询,这会破坏页面功能,正如您所看到的那样。你应该慢慢来读this post 我在这个问题上做了很多
您只需要类别中的默认循环。php,没有其他内容
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
//Your html and template tags
}
}
编辑一些额外的信息
您不需要所有这些语句来检查类别。您只需访问查询的对象并从中获取所需的任何信息。get_queried_object()
返回完整的查询对象,get_queried_object_id()
返回当前对象id。因此您可以将以下内容传递给查询参数
\'cat\' => get_queried_object_id(),
而不是做那么多
if/else
报表
编辑2看起来你最头疼的其实是你的自定义帖子类型。默认情况下,它们将从类别页面的主查询中排除。根据我过去的推荐,您所做的更改将不会显示自定义帖子类型的帖子,只会显示来自默认帖子类型的帖子post
正如我在链接帖子中所描述的,您应该使用pre_get_posts
更改主查询以满足您的需要。这也是你在这里应该做的。
在您的功能中。php,您需要添加以下代码,这将把您的自定义帖子类型添加到您的分类页面
add_action( \'pre_get_posts\', function ( $q )
{
if ( !is_admin() && $q->is_main_query() && $q->is_category() ) {
$q->set( \'post_type\', array( \'post\', \'plants\' ) ); //This will show normal posts and plants
}
});
以上内容现在将显示正常立柱和立柱式工厂的立柱。如果不需要显示正常帖子,只需删除
post
从阵列中