Хочу сделать на сайте алфавитный указатель, где бы выполнялся поиск по алфавиту. Проблема в том, что все плагины типа
Alphabetic pagination, которые я устанавливала, у меня почему-то не работают. Мне нужно, чтобы поиск выполнялся через таксономию, а не через категории. Пробовала также как
тут написано - не помогло, получилось только что при нажатии на любую букву выводится просто архив с записями. Есть ли какие-нибудь плагины на вордпресс для поиска по алфавиту с использованием таксономии? Или как можно изменить этот код, чтобы у меня выводились только те записи, название которых начинается с определенной буквы, а не архив всех записей?
<?php
/*
Template Name: artists2
*/
get_header();
/* eng */
echo '<ul>';
for ($i = ord('A'); $i <= ord('Z'); $i++) {
echo '<li><a href="/persons?letter=' . chr($i) . '">' . chr($i) . '</a></li>'; // artists.html - меняем на свой адрес
}
echo '</ul>';
/* rus */
echo '<ul>';
$abc_rus = array();
foreach (range(chr(0xC0), chr(0xDF)) as $b) {
$abc_rus[] = iconv('CP1251', 'UTF-8', $b);
}
foreach ($abc_rus as $lette_rus) {
echo '<li><a href="/persons?letter=' . $lette_rus . '">' . $lette_rus . '</a></li>'; // artists.html - меняем на свой адрес
}
echo '</ul>';
/* number */
echo '<ul>';
for ($i = 0; $i <= 9; $i++) {
echo '<li><a href="/persons?letter=' . $i . '">' . $i . '</a></li>'; // artists.html - меняем на свой адрес
}
echo '</ul>';
$letter = mb_substr($_GET['letter'], 0, 1, 'utf-8');
$letter_upp = mb_strtoupper($letter, 'UTF-8');
// Получаем все категории. ћожно заменить "category" на вашу таксономию.
// Сортируем по названию в порядке убывания. Также не будем показывать категории у которых нет записей.
$terms = get_terms("person_name", 'orderby=name&hide_empty=0&order=ASC');
// Проверяем есть ли у нас на сайте есть категории
$count = count($terms);
if ($count > 0) {
echo "<ul class='new_singer'>";
// Перебираем массив со всеми категориями
foreach ($terms as $term) {
// Берем первую букву категории
$artist_name_letter = mb_substr($term->name, 0, 1, 'utf-8');
// Сравниваем без учета регистра искомую букву с первой у категории
if (strnatcasecmp($letter_upp, $artist_name_letter) == 0) {
/* выводим название категории которая подходит */
echo "<li>" . $term->name . "</a></li>";
}
}
echo "</ul>";
}
get_sidebar();
get_footer();
?>