我有一个Wordpress网站,在我的主页上我想显示最后5个新闻,这些是自定义类型。所以我使用的是wp_pagenavi插件,但它在'index.php'中不起作用。在www.mysite.com中,它显示最后5个新闻和分页但当我尝试移动到第二个(或另一个)页面时,它不显示任何新闻。例如,单击页码2后,它会将我重定向到www.mysite.com/page/2 /.
我在index.php中有这段代码:
...
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$news = new WP_Query('post_type=news&cat=-5&paged='.$paged);
if ($news->have_posts()) :
?>
<ul>
<?php while ($news->have_posts()) : $news->the_post(); $do_not_duplicate = $post->ID; ?>
<li>
// Code for displaying news
</li>
<?php endwhile; ?>
</ul>
<?php endif;?>
<?php if(function_exists('wp_pagenavi')) : ?>
<div class="navi"><?php wp_pagenavi(array( 'query' => $news )); ?></div>
<?php endif; ?>
...
感谢。
答案 0 :(得分:1)
我刚解决了。
我在functions.php中添加了以下代码:
function news_index($query) {
if (!is_admin() && $query->is_main_query() ) {
if ($query->is_home()) {
$query->set('post_type', 'news');
$query->set('cat', -5);
}
}
}
add_action('pre_get_posts', 'news_index');
在index.php中,我删除了自定义查询:
...
<?php
if ($have_posts()) :
?>
<ul>
<?php while (have_posts()) : the_post(); $do_not_duplicate = $post->ID; ?>
<li>
// Code for displaying news
</li>
<?php endwhile; ?>
</ul>
<?php endif;?>
<?php if(function_exists('wp_pagenavi')) : ?>
<div class="navi"><?php wp_pagenavi(); ?></div>
<?php endif; ?>
...