在基于Genesis的定制主题中使用定制查询的分页困难

时间:2013-05-17 作者:vlasits

我正在创建一个创世儿童主题。我有一个叫做“教员”的类别,里面有大约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名教员随机顺序[耶!]

1 个回复
最合适的回答,由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 用于在多个页面上保持随机顺序的技术。

结束

相关推荐

wp_list_categories pagination

我想知道我是否可以为wp\\U list\\U类别分页?我尝试了paginate\\u链接,但运气不好。还是有好的解决方法?非常感谢。<?php $orderby = \'name\'; $show_count = 0; $pad_counts = 0; $hierarchical = 1; $taxonomy = \'categories\'; $title = \'\'; $exclude = \

在基于Genesis的定制主题中使用定制查询的分页困难 - 小码农CODE - 行之有效找到问题解决它

在基于Genesis的定制主题中使用定制查询的分页困难

时间:2013-05-17 作者:vlasits

我正在创建一个创世儿童主题。我有一个叫做“教员”的类别,里面有大约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名教员随机顺序[耶!]

1 个回复
最合适的回答,由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 用于在多个页面上保持随机顺序的技术。

相关推荐

Count posts for pagination

我正在为一个网站分页<;上一页(页码)下一页>很简单,已经完成。但是现在我需要添加一个选择器来直接转到页面(例如:转到第7页),要这样做,我需要知道有多少页面,为此我需要计算在查询中找到了多少帖子。问题是这个网站有太多的帖子(>13.000),查询所有帖子都会减慢页面加载速度,这就像。。。10秒后页面才能加载。显然,这是不可接受的。分页解决了这个问题,因为一次只加载50或100篇文章,但我无法将它们全部计算在内。我可以在不加载的情况下统计某个查询中的帖子吗?或者我可以通过其他方式获得页数吗