我是否可以使用PaginateLinks()来添加分页列表,同时阻止它插入链接?

时间:2019-07-26 作者:cag8f

我的页面显示WordPress用户列表。对于分页,我使用了函数paginate_links. 这会在我的页面上插入一个列表,例如。

第2页第3页第4页(screenshot). 每个列表项都是指向一个新页面的链接,该页面显示分页结果,例如。

  • http://example.com/sample-page/page/2/
  • http://example.com/sample-page/page/3/
  • http://example.com/sample-page/page/4/

    有没有一种方法可以使用paginate\\u links()只插入列表,但不要在每个项目中插入链接,也不要创建新页面?

    这样做的动机是我想显示列表,但我想将我自己的链接添加到每个列表项。每个链接都将是一个对我的服务器进行AJAX调用、获取新数据并将其全部显示在同一页面上的链接。当访问者单击其中一个链接时,我不希望他被重定向到其他页面,也不希望创建新页面——这两种行为似乎都是paginate\\u links()的默认行为。

    My existing code

    <?php 
    
    
        $number      = 10; // Update this according to your needs. Users perpage  
        $paged       = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;  
        $offset      = ($paged - 1) * $number;  
        $users       = get_users();  
    
        $args = array(
            \'orderby\'      => \'login\',
            \'order\'        => \'ASC\',
            \'offset\'       => $offset,
            \'number\'       => $number,
            \'count_total\'  => false,
        ); 
    
        $query       = get_users($args);  
    
        $total_users = count($users);  
        $total_query = count($query);  
        $total_pages = intval($total_users / $number) + 1; 
    
        echo $total_users . \' \' . $total_query . \' \' . $total_pages;
    
        if ($total_users > $total_query) {
            ?>
            <div id="pagination" class="clearfix">  
                <span class="pages">Pages:</span>  
                <?php
                $current_page = max(1, get_query_var(\'paged\'));  
                echo paginate_links(array(  
                    \'base\'      => get_pagenum_link(1) . \'%_%\',  
                    \'format\'    => \'page/%#%/\',  
                    \'current\'   => $current_page,  
                    \'total\'     => $total_pages,  
                    \'prev_next\' => false,  
                    \'type\'      => \'list\',  
                ));  
                ?>
            </div>  
            <?php
        }
    

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

您可以从中获得三种类型的输出paginate_links(), 但他们都会<a> 在他们里面。

我认为一个简单的解决方案是使用PHP去掉<a> 给你贴标签。而不是回应paginate_links(), 将其存储在变量中,然后使用preg_replace() 要取出锚并回音:

$pagination_link_output = paginate_links(array(  
    \'base\'      => get_pagenum_link(1) . \'%_%\',  
    \'format\'    => \'page/%#%/\',  
    \'current\'   => $current_page,  
    \'total\'     => $total_pages,  
    \'prev_next\' => false,  
    \'type\'      => \'list\',  
));  

echo preg_replace(\'#<a.*?>([^>]*)</a>#i\', \'$1\', $pagination_link_output);
如果您想选择该路线,还可以进行筛选:https://developer.wordpress.org/reference/hooks/paginate_links/

希望有帮助!!

相关推荐

Users activity history

当我们更改代码上的一些问题时,wordpress web出现了一些问题,我想确定是哪些更改导致了web崩溃。我尝试了一些插件作为简单的历史记录,但问题是,您无法在安装插件之前获得所做的活动。有人知道即使我们没有安装插件,我如何才能获得网站的全部活动吗?提前谢谢。