wp_pagenavi插件,自定义查询无法在index.php中运行 - Wordpress

时间:2014-06-05 10:07:40

标签: wordpress

我有一个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; ?>
...

感谢。

1 个答案:

答案 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; ?>
...