如何创建字母顺序的范围分页?

时间:2013-10-25 作者:scott

目前,我正在尝试使用以下方法在自定义字段上为自定义帖子类型创建带范围的字母分页this code 凯西写的太棒了。除了射程方面,我的一切都正常。如A-E、F-H等。任何帮助都会很好。谢谢

1 个回复
SO网友:gmazzap

如果您使用过that 代码,现在您有了一个名为“glossary”的自定义分类法,您需要显示的范围是一个自定义查询,如

new WP_Query( array(
  \'tax_query\' => array(
     array(
       \'taxonomy\' => \'glossary\',
       \'field\' => \'slug\',
       \'terms\' => range(\'a\', \'e\')
     )
   )
) );
问题是how to perform this query with a url?

您可以使用endpoint, 类似于

add_action(\'init\', \'add_glossary_range_endpoint\');

function add_glossary_range_endpoint() {
    add_rewrite_endpoint( \'letters\', EP_ROOT );
}
访问链接时执行此操作http://example.com/letters/a-e/ 将变量“letters”添加到查询中,您可以截取它并使用pre_get_posts

add_action(\'pre_get_posts\', \'glossary_range_query\');

function glossary_range_query( $query ) {
  if ( ! is_admin() && $query->is_main_query() && $query->get(\'letters\') ) {
     $letters = explode(\'-\', $query->get(\'letters\') );
     if ( count($letters) == 2 ) {
        $tax_query = array(
          \'taxonomy\' => \'glossary\',
          \'field\' => \'slug\',
          \'terms\' => range($letters[0], $letters[1])
        );
        $query->set(\'tax_query\', array($tax_query) );    
        $query->set(\'letters\', NULL );     
     }
  }
}
现在,您必须访问后端上的“设置”->“永久链接”页面,保存更改以刷新重写规则,然后完成操作。

现在,您可能需要创建一个功能来显示指向范围页面的链接,例如:

function get_glossary_range_url( $from = \'a\', $to = \'z\' ) {
  return home_url( \'/letters/\' . $from . \'-\' . $to . \'/\' );
}

结束

相关推荐

Pagination in category

Updated: I have 50 categories and i wants to show each 5 category on one page and next 5 on next page and next 5 on next page. and so on. with pagination.我在WordPress网站上有50个类别。我想在每一页上显示五个类别,用10篇文章分页。我已经尝试过了,但分页并没有产生效果。<?php // get all the categ