asyaevloeva
@asyaevloeva

Как сделать алфавитный поиск в вордпрессе?

Хочу сделать на сайте алфавитный указатель, где бы выполнялся поиск по алфавиту. Проблема в том, что все плагины типа 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();
?>
  • Вопрос задан
  • 2833 просмотра
Решения вопроса 1
@branky
На тему алфавитного указателя для WordPress я написал подробную инструкцию. Есть возможность применить код в произвольных таксономиях, а также, использовать Кириллицу в качестве буквенных индексов.
Алфавитный указатель WordPress
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы