在category.php中我使用自定义查询来获取帖子:
<?php
$cat_id = get_query_var('cat');
$args = array(
'posts_per_page' => 2,
'orderby' => 'date',
'cat' => $cat_id
);
query_posts($args);
// the Loop
get_template_part('aa_HomeLoopMain');
?>
我正在使用get_query_var('cat')
来获取当前类别的类别帖子,我认为这只会给类别ID的类别帖子$cat_id
但不是子类别帖子?
答案 0 :(得分:2)
你做错了。永远不要使用query_posts
,它会破坏主查询对象,重新运行查询,并且速度慢,这些都会对性能和SEO以及依赖于主查询的其他函数产生负面影响。另外,如果这是您的主要查询,则根本不应该使用自定义查询,您应该在执行前使用pre_get_posts
来更改主查询。
get_query_var(
cat )
仅返回查询的类别,而不是其子级。
您应该删除query_posts
部分并将以下内容添加到functions.php
add_action( 'pre_get_posts', function ( $q )
{
if ( !is_admin()
&& $q->is_main_query()
&& $q->is_category()
) {
$q->set( 'posts_per_page', 6 );
}
});
你应该总共查询6个帖子,我已经更新了我的帖子。您可以使用循环尝试以下内容
if ( have_posts() ) {
while( have_posts() ) {
the_post();
if ( 1 <= $wp_query->current_post ) {
// Add your markup for column one, this will display 2 posts
} else {
// Add your markup for column two, this will display 4 posts
}
}
}
出于某种原因,我无法发布我的手机评论,但我认为您错误地使用了该代码。我已更新我的代码以显示循环。它确实有效。如果没有,则其他内容会破坏您的网页,例如query_posts