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

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

Похожие вопросы