使用wp_pagenavi的分页在自定义页面上不起作用

时间:2014-06-19 作者:Payal

我有麻烦了wp_pagenavi 使用自定义查询处理起始页。它在每个标准模板(如类别)上都运行良好。php。但不是在主页上。

代码如下:

<?php

        $args=query_posts(array(
          \'post__not_in\'=> array(419),
          \'post_type\' => \'post\',
          \'posts_per_page\' => 10,
          \'paged\' => get_query_var(\'page\'), ));

        $my_query = new WP_Query($args);
        if( $my_query->have_posts() ) {

          while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <?php 
       $featuredImage = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );

        $s1=strtolower($title);

       ?>
    <div id="post-<?php echo $post->ID;?>" <?php $item_format = is_video() ? \'video\' : \'post\'; post_class(\'item cf item-\'.$item_format); ?>>
        <div class="thumb">
        <?PHP \'<a class="clip-link" data-id="\'.$post->Id.\'" title="\'.esc_attr(get_the_title($post->Id)).\'" href="\'.get_permalink($post->Id).\'">\'?>
             <a class="clip-link"  title="<?php the_title();?>" href="<?php the_permalink();?>" rel="bookmark">
                <span class="clip">
                    <?php echo\'<img src="\'.$featuredImage.\'" alt="\'.esc_attr(get_the_title($post->Id)).\'" />\';?>
                    <span class="vertical-align"></span> 
                </span>

                <span class="overlay"></span>
            </a>
        </div><!--- thumb----->
    </div><!-- end #post-<?php the_ID(); ?> -->

    <?php

     endwhile;
     global $my_query;
     $total_pages = $my_query->max_num_pages; 

         if($total_pages > 1)
         { ?>
                <div class="loop-nav pag-nav">
                <div class="loop-nav-inner">
                    <?php 
                    if(function_exists(\'wp_pagenavi\')) {
                        wp_pagenavi();
                    } else {
                        $label = __(\'&laquo; Prev\', \'dp\');
                        if($prev = get_previous_posts_link($label))
                            echo str_replace(\'<a\', \'<a clas="prev"\', $prev);
                        else
                            echo \'<span class="prev">\'.$label.\'</span>\';

                        $label = __(\'Next &raquo;\', \'dp\');
                        if($next = get_next_posts_link($label))
                            echo str_replace(\'<a\', \'<a class="next"\', $next);
                        else
                            echo \'<span class="next">\'.$label.\'</span>\';
                    } ?>
                </div>
                </div><!-- end .loop-nav -->
    <?php
 } 
    }

      wp_reset_query();  // Restore global post data stomped by the_post().
    ?>
            </div><!---nag cf---->
            </div><!---loop-content grid-mini--->
分页显示,但url/page/2/ 它显示出不工作/page/1/ 后果

1 个回复
SO网友:Pieter Goosen

不幸的是,自定义循环的构造有点混乱。我现在不打算讨论这个问题,但我会添加链接供您阅读:-)。

您应该去看看如何使用WP_Query. 您还应该了解如何使用next_posts_link 使用自定义查询时。最后一点,您的代码中有一些bug,您需要查看一下。您应该在wp config中将调试设置为true。php。这是一篇关于Debugging Wordpress

此时,您只需要创建一个自定义查询来从循环中删除一篇文章。除此之外,您正在自定义循环中运行主查询。

Here is how I would tackle this problem.

使用标准循环重置页面,您使用的循环与上述用于类别的循环相同。php。现在,使用pre_get_posts 从主查询中排除您的帖子。这是代码。在函数中添加此项。php。这是根据法典修改的。

function exclude_single_posts_home($query) {
    if ($query->is_home() AND $query- >is_main_query()) {
         $query->set(\'post__not_in\', array(419));
    }
}

add_action(\'pre_get_posts\', \'exclude_single_posts_home\');

结束

相关推荐

Trouble with pagination

所以,我在这里和国际抄本上读了很多帖子,但一点运气都没有。我有一个自定义的帖子类型叫Work。在我的公文包页面上,我将“posts\\u per\\u page”设置为12。在这个自定义帖子类型中,我总共有300篇帖子。我试图让寻呼工作,但根本没有得到它。我的查询: <?php $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1; $al