我正在创建一个创世儿童主题。我有一个叫做“教员”的类别,里面有大约60个职位。我正在修改类别模板文件,以便它以自定义方式显示此类别。
期望的结果是
教员的出现顺序是随机的,不会超过一次。他们以每页四人一组的形式出现。以下是我的页面中的相关代码(category faculty.php):
remove_action(\'genesis_loop\', \'genesis_do_loop\');
add_action(\'genesis_loop\', \'hdo_faculty_loop\');
function hdo_faculty_loop() {
global $paged;
$args = array(
\'category_name\' => \'faculty\',
\'posts_per_page\' => 4,
\'orderby\' => \'rand\',
\'paged\' => $paged
);
genesis_custom_loop( $args );
}
genesis();
我得到的是<;>:
每页4名教员随机顺序[耶!]页面底部的上一次和下一次导航[耶!]只有6页(24名教员),而不是预期的15页24人一组重复教员第六页上的“下一个”循环,导航到404
最合适的回答,由SO网友:Milo 整理而成
我不熟悉Genesis,但大多数WordPress分页问题都有类似的原因。在WordPress中加载页面时,主默认查询的结果决定可用页面的数量。您可以看到自定义查询的结果,但分页基于完全不同的查询。这通常通过使用pre_get_posts
修改主查询而不是运行新查询的操作:
function wpa_category( $query ) {
if ( $query->is_category( \'faculty\' ) && $query->is_main_query() ) {
$query->set( \'posts_per_page\', 4 );
$query->set( \'orderby\', \'rand\' );
}
}
add_action( \'pre_get_posts\', \'wpa_category\' );
不过,这并不能完全解决您的问题-随机顺序的东西也会在这里弹出。问题是,顺序不是跨多个页面维护的,而是针对每个页面加载随机进行的。看见
this answer 用于在多个页面上保持随机顺序的技术。