Как создать алфавитную разбивку на страницы с диапазоном?

В настоящее время я пытаюсь создать алфавитную разбивку на страницы с диапазонами для пользовательского типа сообщения в настраиваемом поле, используя этот код из kathy. У меня все работает, за исключением его аспекта. Такие как AE, FH и так далее. Любая помощь будет большой. Благодарю.

Если вы использовали этот код, теперь у вас есть обычная таксономия под названием «глоссарий», то, что вам нужно, чтобы показать диапазон, – это настраиваемый запрос, например

new WP_Query( array( 'tax_query' => array( array( 'taxonomy' => 'glossary', 'field' => 'slug', 'terms' => range('a', 'e') ) ) ) ); 

Проблема в том, как выполнить этот запрос с URL-адресом ?

Вы можете использовать конечную точку , что-то вроде

 add_action('init', 'add_glossary_range_endpoint'); function add_glossary_range_endpoint() { add_rewrite_endpoint( 'letters', EP_ROOT ); } 

При этом, когда вы посещаете ссылку http://example.com/letters/ae/ в запрос добавляется переменная «буквы», и вы можете ее перехватить и использовать для своей области с помощью pre_get_posts hook

 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 ); } } } 

Теперь вам нужно перейти на страницу Настройки-> Перманентные ссылки на вашем бэкэнд и сохранить изменения для сброса правил перезаписи, а затем вы закончите.

Теперь, вероятно, вам нужно создать fucntion, чтобы показать ссылку на страницы диапазона, например:

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