更改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 );