【问题标题】:Plugin pagination?插件分页?
【发布时间】:2012-06-05 22:15:51
【问题描述】:

所以我有一个插件可以向 WordPress 添加短代码。应用时,它从远程 API 中提取数据,对其进行解析并相应地显示。 API 在内部以查询参数“per_page”和“page”的形式对数据进行分页,其中“per_page”是每页显示的项目数,“page”是要显示的集合中的哪个页面。我遇到的问题是找出在前端处理此类分页的最佳方法。到目前为止,我提出的唯一选择是提取总页数,相应地显示分页栏,并将任何数字(或下一个/上一个)作为 POST 变量传递回显示数据的函数。这个解决方案充其量似乎是骇人听闻的,并且需要重新加载我不想拥有的多余页面。有没有人对更清洁的处理方式有任何建议?理想情况下,我希望它内联加载数据,即;根本不重新加载页面。

这是我目前正在使用的...

<?php if ($result->info['pages'] > '1') {
    if ($result->info['page'] != '1') {
        echo '<a onClick="location.replace(\'?page=' . ($result->info['page'] - 1) . '\');">Prev</a> ';
    } else {
        echo 'Prev ';
    }
    for ($i = 1; $i <= $result->info['pages']; $i++) {
        if ($i == $result->info['page']) {
            echo $i . ' ';
        } else {
            echo '<a onClick="location.replace(\'?page=' . $i .'\');">' . $i . '</a> ';
        }
    }
    if ($result->info['page'] != $result->info['pages']) {
        echo '<a onClick="location.replace(\'?page=' . ++$result->info['page'] . '\');">Next</a>';
    } else {
        echo 'Next';
    }
} ?>

【问题讨论】:

    标签: php pagination wordpress


    【解决方案1】:

    我不确定我是否正确理解了这个问题 -

    但是为什么不使用wordpress "built-in" 分页功能呢?

    或者 - 你也可以尝试在查询中使用 offset 参数。

    你可能还想看看HERE——这个分页函数可以获取自定义循环的参数。

    编辑我(在 cmets 提出问题不是关于查询而是关于 ajax 之后)

    这是一个非常简单的示例,您必须根据页面结构对其进行一些更改以使其适合您。

    <div id=”content”>
    <div id=”post-list”>
                (Post Loop Here)
    </div>
    </div>
    <div id=”ajaxPagination”>Load more</div>
    

    Javascript/jQuery

    $(document).ready(function() {
    
    var pageNumber = 1;
    var baseURL = $(location).attr(‘href’);
    
    $(‘#ajaxPagination’).click(function() {
    $(‘#ajaxPagination’).html(‘Loading…’);
    pageNumber++;
    var link = baseURL + ‘page/’ + pageNumber + ‘/’;
    $.ajax({
    url: link,
    success: function(html) {
    var result = $(html).filter(‘#content’);
    $(‘#post-list’).append(result);
    $(‘#ajaxPagination’).html(‘Load more’);
    },
    error: function(html) {
    $(‘#ajaxPagination’).html(‘No more..’);
    }
    });
    });
    
    })
    

    或者,有很多插件可以做到这一点,还有一些网络上的教程,您可以剖析代码并查看它是如何完成的(或者直接使用插件)

    示例:http://wordpress.org/extend/plugins/ajax-pagination/installation/

    http://www.99points.info/2011/01/ajax-pagination-using-jquery-and-php-with-animation/

    等等..

    【讨论】:

    • 内置的分页并不是我所需要的。我目前正在使用确实包含查询页面和总页面参数的东西......问题是我想加载新数据而不重新加载页面,到目前为止我还远远不能做到这一点。
    • 不重新加载页面?你需要ajax ..这不是查询或对象问题..
    • 我已经弄清楚了那部分......我只是无法弄清楚 ajax。
    • 好的-奇怪的是,在你的问题中没有出现“ajax”这个词,你也没有提到你想要它而不需要重新加载。现在您的问题已经得到了更好的理解 - 我会回复您。
    • 抱歉,重读了最初的问题后,我可以理解您的困惑。感谢您迄今为止的帮助。我不能使用实际的分页插件,因为它打算包含在另一个插件中(一个小部件和短代码都需要分页)。不过,我将查看发布的代码以及您的示例。
    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2015-02-08
    • 2016-01-08
    • 2018-02-19
    相关资源
    最近更新 更多