0

所以我有一个插件,可以向 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';
    }
} ?>
4

1 回答 1

0

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

但为什么不使用wordpress“内置”分页功能呢?

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

您可能还想看这里- 这个分页功能可以获得自定义循环的参数。

编辑我(在评论建议问题不是关于查询而是关于ajax)

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

<div id=”content”&gt;
<div id=”post-list”&gt;
            (Post Loop Here)
</div>
</div>
<div id=”ajaxPagination”&gt;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/

ETC ..

于 2012-06-02T02:21:50.953 回答