为分页帖子定制wp_link_ages|随机下一页

时间:2021-05-15 作者:Said Erraoudy

有人知道有没有可能改变吗wp_link_pages,我想更改页面的顺序示例:我有一篇由5页组成的帖子,当你点击;下一页“;,它会把你带到这篇文章中五页中的任意一页。无重复

非常感谢您的任何想法/帮助,S。

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

更改wp_link_pages() 功能是一个选项,但随机设置页码或页面链接可能会对用户的体验有害,因为用户在注意到随机页码(例如,在帖子的URL中)时,希望看到正常的页面链接结构。

然而,存在content_pagination 允许您更改帖子的$pages 大堆仅仅shuffling 这个数组就足够了,但是,这既不能保证静态页面顺序,也不能排除页面重复的可能性,因为在每次页面加载时都会执行洗牌。

您可以通过使用array_multisort() 结合mt_srand(), 如中所述this answer, 然后,用帖子的ID等为随机数生成器播种,但每个用户都会得到相同的(伪随机)页面顺序,人们可能会争论页面洗牌到底有什么用。

您可以在种子中混合用户ID(如果有),例如,将帖子ID与用户ID相乘,以增加向每个注册用户提供其;“拥有”;不同帖子的静态页面顺序不同。最后,这真的取决于你想要什么,以及你愿意走多远。

代码示例(以post ID为种子):

function shuffle_pages( array $pages, WP_Post $post ): array {
    mt_srand( $post->ID );
    $order = array_map( function ( $val ) { return mt_rand(); }, range( 1, count( $pages ) ) );
    array_multisort( $order, $pages );
    return $pages;
}
add_filter( \'content_pagination\', \'shuffle_pages\', 10, 2 );

相关推荐

pagination leads to 404 page

我想弄明白为什么我的分页没有显示出来,我快发疯了。我将设置场景:我有一个页面“category.php”。在这个页面中,我为所有分类帖子设置了一个自定义查询。它们是自定义帖子类型,并显示该类别的自定义帖子。我的问题如下:我已经尝试过这个函数:the_post_pagination();$category = get_category(get_query_var(\'cat\')); if ( get_query_var(\'paged\') ) { $paged = get_query_var(