我看了这篇关于为什么在互联网上分页很奇怪的演讲。https://speakerdeck.com/u/espylaub/p/pagination-on-the-internet-and-why-its-weird这启发了我尝试制作一个WordPress插件来实现这一点。这是我到目前为止得到的。。。
<?php
/*
Plugin Name: Reverse Pagination
Description: Pagination starts higher and goes lower for more consistent archive page numbering.
Author: Russell Heimlich
Version: 0.1
*/
function reverse_pagination_pre_get_posts($t) {
$q = $t->query_vars;
if ( empty($q[\'order\']) || ((strtoupper($q[\'order\']) != \'DESC\') && (strtoupper($q[\'order\']) != \'ASC\')) ) {
$q[\'order\'] = \'ASC\';
}
$t->query_vars = $q;
}
function reverse_pagination_wp() {
global $wp_query;
$wp_query->posts = array_reverse($wp_query->posts);
}
if( !is_admin() ) {
add_action(\'pre_get_posts\', \'reverse_pagination_pre_get_posts\');
add_action(\'wp\', \'reverse_pagination_wp\');
}
我钩住了pre_get_posts
操作并将订单查询变量切换为ASC,而不是默认描述。接下来,我需要颠倒返回的帖子的顺序,使它们按相反的时间顺序排列。我选择了wp
根据本答复中概述的原因采取行动https://wordpress.stackexchange.com/a/22768
所以到目前为止情况看起来不错。我只需要修改第一页。现在如果我的博客有50页,没有paged
参数设置博客索引页将显示我的第一篇文章,而不是最新的文章。我需要一些逻辑来检查paged
未设置为将其设置为相同的值$wp_query->max_num_pages
对于该查询。
我还需要禁用从URL中删除/page/1/的规范重定向,并调整get_pagenum_link()
函数,使其返回/page/1/forget_pagenum_link(1)
http://hitchhackerguide.com/2011/02/12/get_pagenum_link/
如果还有什么可以添加的,以使这个插件更好,请说出来!谢谢,我希望我们能通过共同努力实现这一目标。