我已经在WordPress管理面板上设置了每个页面显示的10个帖子,但是我想在第一页和我的主页上显示11个帖子。所以我想在主页和所有其他页面上显示11个帖子,我想要显示10个帖子。
我正在尝试使用此代码实现它,但无论页码如何,is_home()始终返回true。
function home_custom_query( $query ) {
if ( is_home() )
{
$query->query_vars['posts_per_page'] = 11;
}
return $query;
}
add_filter( 'pre_get_posts', 'home_custom_query' );
但是上面的代码更改了包括主页在内的所有页面的帖子数量。
我也试过这个来检测页码并尝试如下
function home_custom_query( $query ) {
if ( is_home() && $query->query_vars['paged'] == 0)
{
$query->query_vars['posts_per_page'] = 11;
}
return $query;
}
add_filter( 'pre_get_posts', 'home_custom_query' );
它将主页的每页帖子更改为11,但在所有其他页面上不显示任何内容。
我还尝试了cbnet-different-posts-per-page插件,它实现了目的,但它添加了一些我不想使用的额外功能。我需要一个解决我问题的简单方法。而且我相信会有一个干净利落的方法来解决这个问题。
答案 0 :(得分:0)
您的模板必须在某个地方有一个循环,您可以在其中执行查询。你可以在其中给出参数showposts。她的一个例子。
<?php
$page_num = $paged;
if ($pagenum='') $pagenum =1;
if(is_home) { $showposts = 11 } else { $showposts = 10 }
query_posts('showposts=' .$showposts. '&paged='.$page_num);
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
// WordPress loop
<?php endwhile; ?>
<?php endif; ?>
答案 1 :(得分:0)
我按照以下方式做了,也可能对你有所帮助。
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$page_num = $paged;
if( $paged >1 )
$showposts = 10;
else
$showposts = 11;
query_posts('showposts=' .$showposts. '&paged='.$page_num);
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
// WordPress loop
<?php endwhile; ?>
<?php endif; ?>