Я хочу создать алфавитную навигацию для настраиваемой таксономии в WordPress без влияния на дизайн сайта - PullRequest
1 голос
/ 25 июня 2019

Я хочу создать алфавитную навигацию для настраиваемой таксономии в WordPress без влияния на дизайн сайта?если пользователь нажимает на любой алфавит, такой как A, то он показывает все категории списков, начинающиеся с A, а также тот же фильтр условий для перечисления данных

Я пробовал некоторые плагины, такие как листинг A_Z, алфавитная нумерация страниц (не работает вообще, всегда спрашивайте премиум-версию, как я могу ее использовать), A2Z Алфавитные архивные ссылки (работают только с сообщениями, не относящимися к категориям пользовательских списков)

/ test / # letter-B показывать это только в адресной строке, но без фильтрации

1 Ответ

1 голос
/ 25 июня 2019

Итак, вот кое-что, что я придумал.Вы получаете таксономию в алфавитном порядке.Затем вы добавляете буквы в фильтр.Затем используйте JavaScript для фильтрации для вас.Надеюсь, это поможет!

    $terms = get_terms( array (
        'hide_empty' => 'false',
        'taxonomy'   => 'your_taxonomy',
        'order'      => 'ASC',
        'orderby'    => 'name',
    ));

    $filter_letters = array();
    $tax_wrap;
    $filter_wrap = '<div class="filter-wrap">';
    foreach($terms as $t) :
        $letter = substr( $t->name, 0, 1 );
        if(!in_array($letter, $filter_letters)) {
            $filter_letters[] = $letter;
            $filter_wrap .= '<span id="letter-' . $letter . '" class="letter">' . $letter . '</span>';
        }
        $tax_wrap .= '<div class="letter-' . $letter .' tax-row">
                        <a href="' . esc_url(get_term_link( $t )) .'">' . $t->name .'</a>
                    </div>';

    endforeach;
    $filter_wrap .= '</div>';

    ob_start();
    echo $filter_wrap;
    echo $tax_wrap;
    ?>
    <script>
        jQuery(function( $ ){
            $('.filter-wrap .letter').click(function() {
                $('.tax-row').hide();
                var id = $(this).attr('id');
                $('.' + id).show();
            });
        });
    </script>

    <?php

    return ob_get_clean();
...