分页不适用于自定义查询

时间:2017-03-14 作者:Lewis Menelaws

当我在我的网站上按类别搜索时,我试图更改页面。当我不在某个类别下搜索时,我可以很好地切换页面,但当我搜索某个类别时,我无法切换页面。

$paged = ( get_query_var( \'paged\' ) ) ? absint( get_query_var( \'paged\' ) ) : 1;
        $orderby = ( get_query_var( \'orderby\' ) ) ? absint( get_query_var( \'orderby\' ) ) : \'display_name\';
        if($_GET[\'search\'] && !empty($_GET[\'search\'])) {
            $search = $_GET[\'search\'];
        }

        if($_GET[\'category\'] && !empty($_GET[\'category\'])) {
            $category = $_GET[\'category\'];
        }

        $args = array(
            \'orderby\' => \'rand\',
            \'number\' => 7,
            \'paged\' => $paged,
            \'search\' => \'*\'.esc_attr( $search ).\'*\',
            \'meta_query\' => array (
                array(
                    \'key\' => \'organization_category_2\',
                    \'value\' => $category,
                    \'compare\' => \'like\'
                )
            )
        );


        $user_query = new WP_User_Query($args);
和我的分页链接:

<?php
              $total_user = $user_query->total_users;
              $total_pages=ceil($total_user/7);

                echo paginate_links(array(
                    \'base\' => get_pagenum_link(1) . \'%_%\',
                    \'format\' => \'?paged=%#%\',
                    \'current\' => $paged,
                    \'total\' => $total_pages,
                    \'prev_text\' => \'Previous\',
                    \'next_text\' => \'Next\',
                    \'type\'     => \'list\',
                ));

  ?>
每当我尝试进行搜索时,都会得到如下url:

https://mywebsite.ca/directory/?search&category=Government#038;category=Government&paged=2

3 个回复
SO网友:Tom J Nowell

分页函数在主查询中起作用,因此您需要使用pre_get_posts 而不是为它们创建一个新的查询。

但是,你正在使用WP_User_Query, 因此,标准分页系统永远不会为您工作。您必须在此处“滚动您自己的”分页系统,手动生成您自己的URL,并根据URL自行设置页面

SO网友:Mukii kumar

if( $user_query->max_num_pages > 1 ) {

    $big = 999999;
    echo paginate_links( array(
        \'base\'      => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
        \'format\'    => \'?paged=%#%\',
        \'current\'   => max( 1, $paged ),
        \'total\'     => $user_query->max_num_pages
    ) );
}
这可能对你有用

SO网友:Stefan

这是官方WordPress Codex中的示例https://codex.wordpress.org/Function_Reference/paginate_links#Example_With_a_Custom_Query

自定义查询示例:

<?php
//Protect against arbitrary paged values
$paged = ( get_query_var( \'paged\' ) ) ? absint( get_query_var( \'paged\' ) ) : 1;

$args = array(
    \'posts_per_page\' => 5,
    \'category_name\' => \'gallery\',
    \'paged\' => $paged,
);

$the_query = new WP_Query( $args );
?>
<!-- the loop etc.. -->
适应上述自定义查询的paginate\\u links参数示例:

<?php
$big = 999999999; // need an unlikely integer

echo paginate_links( array(
    \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
    \'format\' => \'?paged=%#%\',
    \'current\' => max( 1, get_query_var(\'paged\') ),
    \'total\' => $the_query->max_num_pages
) );
?>

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?