Красивый алфавитный указатель для WordPress
Как сделать алфавитный указатель такого вида:
Рубрика 1 А Абрикос Ананас Б Баклажан Банан Рубрика 2 А Абракадабра Б Бизябра Бутерат ...
Чтобы еще название было ссылкой на запись.
что-то вроде этого
Пробовал такое, но кириллицу не распознает
<?php $args=array( 'orderby' => 'title', 'order' => 'ASC', 'posts_per_page'=>-1, 'caller_get_posts'=>1 ); // задаем условия выборки постов $my_query = new WP_Query($args); if( $my_query->have_posts() ) { echo 'По алфавиту всего ' . count($my_query->posts) . ' записи'; while ($my_query->have_posts()) : $my_query->the_post(); $this_char = mb_strtoupper(substr($post->post_title,0,1), 'utf-8'); if ($this_char != $last_char) { $last_char = $this_char; echo '<h2>'.$last_char.'</h2>'; // первая буква записи } ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Постоянная ссылка на <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php endwhile; } wp_reset_query(); ?>
Ваше решение распознает кириллицу
$posts = get_posts('orderby=title&posts_per_page=10'); foreach( $posts as $k => $post ){ // первая буква $fl = get_first_letter( $post->post_title ); $prev_fl = isset( $posts[ ($k-1) ] ) ? get_first_letter( $posts[ ($k-1) ]->post_title ) : ''; if( $prev_fl !== $fl ) echo $fl . '<br>'; // данные echo $post->post_title . '<br>'; } wp_reset_postdata(); function get_first_letter( $str ){ return mb_substr($str, 0, 1, 'utf-8'); }
остается только выводить по категориям и ссылки на запись поставить
Вот как=то так вышло:
большое спасибо.
И Вам спасибо за интересный вопрос!
Здравствуйте, подскажите, куда нужно вставлять этот код?
Здравствуйте. Туда, где Вы хотите выводить эту информацию.
Предлагаю ещё один вариант алфавитной навигации по первой букве поста. Метод работает и с Кириллицей и с произвольными типами записей: Алфавитный указатель WordPress