Keep Pagination in Tabs

时间:2011-08-25 作者:user7481

有没有办法在多个选项卡上分页?

我有一个页面有5个选项卡,每个选项卡都过滤了来自相同帖子的内容。例如:

表1-所有帖子。选项卡2-带有关键字1的帖子。选项卡3-带有关键字2的帖子。

我的问题是,我不知道如何在每个选项卡上使用分页,也不知道如何让用户能够选择该选项卡上的页面并保持在该选项卡上-它想返回到第一个选项卡。

2 个回复
最合适的回答,由SO网友:Mild Fuzz 整理而成

将以下扩展名用于WP_Query

扩展只将参数作为数组而不是字符串格式。

您需要为每个选项卡的“page\\u link”添加单独的值。这应该只是一个字符串(“tab1”、“tab2”等)

那么您需要使用$my_query->next()$my_query->prev() 向每个选项卡添加翻页链接。

Code Also Here

  <?php
class MF_Query extends WP_Query{
    private $page_link = "page";

    function __construct(array $args){
        if(!array_key_exists(\'posts_per_page\',$args)) $args[\'posts_per_page\'] = 10;
        if(array_key_exists(\'page_link\',$args)) $this->page_link[\'page_link\'];

        $args[\'offset\'] = (isset($_GET[$this->page_link])?($_GET[$this->page_link]-1)*$args[\'posts_per_page\']:0);
        parent::query($args);
    }

    function next($link_text = "Next"){

            $curPage = intval((isset($_GET[\'page\'])?$_GET[\'page\']:1));//Use 1 if $_GET[\'page\'] not set

            $link = "<a href=\'".remove_post_vars(curPageURL());

            if($curPage<$this->max_num_pages){
                echo $link.$this->constructQuery($this->merge(array($this->page_link=>$curPage+1),$_GET))."\'>".$link_text."</a>";
            } else {
                return false;
            }


    }
    function prev($link_text = "Previous"){

            $curPage = (isset($_GET[\'page\'])?$_GET[\'page\']:1);//Use 1 if $_GET[\'page\'] not set
            $link = "<a href=\'".remove_post_vars(curPageURL());
            if($curPage>1){
                echo $link.$this->constructQuery($this->merge(array($this->page_link=>$curPage-1),$_GET))."\'>$link_text</a>";
            } else {
                return false;
            }


    }
    private function constructQuery(array $query){


        $url_ext = "?";
        foreach($query as $k => $v){
            $url_ext .=$k."=".$v."&amp;";
        }
        $url_ext = substr($url_ext, 0, -5);//chop last ampersand off


        return $url_ext;

    }
    private function merge($get, $put){
        //Get values from one array, and put them in another (overriding existing values if appropriate)
        foreach ($get as $k => $v){
                $put[$k]=$v;
        }
        return $put;

    }
}
?>

SO网友:Chris Cox

您必须从paginate\\u links()返回一个数组,检查url中的片段标识符,然后在输出之前将其附加到数组中。

结束

相关推荐

Broken category pagination

出于某种原因,下面的代码一直工作到我到达第三页并给出404。不使用任何插件就可以修复它吗?<?php $temp = $wp_query; $wp_query = null; $wp_query = new WP_Query(\'cat=\'. $id .\'&posts_per_page=4&paged=\'.$paged); while ($wp_query->have_posts()) : $wp_query