Trouble with pagination

时间:2013-09-29 作者:Danny

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

我的查询:

        <?php
            $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
            $all_work = new WP_Query(array(
                \'post_type\' => \'work\',
                \'tax_query\' => array(
                    array(
                        \'taxonomy\' => \'type\',
                        \'field\' => \'slug\',
                        \'terms\' => array(\'case-study\', \'portfolio\')
                    ),
                ),
                \'posts_per_page\' => \'12\',
                \'orderby\' => \'title\',
                \'order\' => \'ASC\',
                \'update_post_term_cache\' => false,
                \'nopaging\' => false,
                \'paged\' => 10
                )
            );
            while ( $all_work->have_posts() ) : $all_work->the_post();
        ?>
我的分页代码:

                                        <aside id="post_nav">
                        <?php                   
global $wp_query;

$total_pages = $wp_query->max_num_pages;

if ($total_pages > 1){

  $current_page = max(1, get_query_var(\'paged\'));

  echo \'<div class="page_nav">\';

  echo paginate_links(array(
      \'base\' => get_pagenum_link(1) . \'%_%\',
      \'format\' => \'/page/%#%\',
      \'current\' => $current_page,
      \'total\' => $total_pages,
      \'prev_text\' => \'Prev\',
      \'next_text\' => \'Next\'
    ));

  echo \'</div>\';

}

                        ?>              
                    </aside><!-- /#post_nav --> 
但什么都没有得到。任何帮助都将不胜感激!

谢谢

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您似乎正在尝试对$all_work 查询数据,但分页代码正在使用$wp_query 数据

global $wp_query;

$total_pages = $wp_query->max_num_pages;

if ($total_pages > 1){

  $current_page = max(1, get_query_var(\'paged\'));
。。。因为我不知道的原因。

如果要分页$all_work 您需要使用$all_work 数据中的数据$wp-query 不会是正确的。我怀疑是这种查询的混合造成了问题,我怀疑类似的查询混合也是建议的副本中的代码不适合您的原因。

像这样的方法应该会奏效:

$page = (!empty($_GET[\'myp\'])) ? $_GET[\'myp\'] : 1;
$per_page = 1;
$base = get_queried_object();
// var_dump($base);
if (null === $base) {
  $base = site_url();
} else {
  $base = get_permalink($base->ID);
}

// $paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$all_work = new WP_Query(array(
    \'post_type\' => \'page\',
//  \'tax_query\' => array(
//      array(
//          \'taxonomy\' => \'type\',
//          \'field\' => \'slug\',
//          \'terms\' => array(\'case-study\', \'portfolio\')
//      ),
//  ),
    \'posts_per_page\' => $per_page,
    \'orderby\' => \'title\',
    \'order\' => \'ASC\',
    \'update_post_term_cache\' => false,
    \'nopaging\' => false,
    \'paged\' => $page
  )
);

$total = $all_work->found_posts;
var_dump($total);

while ( $all_work->have_posts() ) {
  $all_work->the_post();
  the_title(0);
}

$page_args = array(
    \'base\'         => $base.\'%_%\',
    \'format\'       => \'?myp=%#%\',
    \'total\'        => ceil($total / $per_page),
    \'current\'      => $page,
    \'show_all\'     => True,
    \'end_size\'     => 1,
    \'mid_size\'     => 1,
    \'prev_next\'    => True,
    \'prev_text\'    => __(\'« Previous\'),
    \'next_text\'    => __(\'Next »\'),
    \'type\'         => \'plain\',
);

echo \'<br/>\';
echo paginate_links($page_args);
这是通用代码,因为我的服务器上没有您的数据,但很明显需要更改什么。

结束

相关推荐

How to use/enable Pagination?

我正在创建一个快捷码,以显示WordPress中具有特定配置文件的用户列表。但我无法启用或显示分页。我的网站上有25个用户,希望每页显示5个配置文件用户,并包括分页。我为学生档案添加了一个新角色student和多个使用高级自定义字段的自定义字段。因此,我需要显示一个学生列表作为适当的字段。到目前为止,问题是我无法启用的分页。下面是我的代码示例:add_shortcode(\'list-users\', \'list_users\'); function list_users($atts)