Intereting Posts
Как создать пользовательское поле для выбора изображения? Перевести плагин с использованием .po .mo файлов Узнайте, какой пользователь создал категорию или тег? Форма обязательного соглашения для доступа к другой странице? Как добавить поле выше раздела пароля на странице профиля «Заголовки уже отправлены» Ошибка при перенаправлении с add_submenu_page () Обратный вызов Как настроить страницы входа / регистрации WordPress? Как я могу подтвердить, что я на главной странице Определение размера поля textarea в пользовательских метабоксах Как проверить пользовательские правила перезаписи / постоянные ссылки? Случайно загружать категории с последним сообщением ключ восстановления пароля недействителен при пользовательском сбросе Исключить категорию из запроса Почему WordPress CMS использует массив в wp_options вместо поля для сообщений Sticky? Страница не может передать запрос – HTTP ERROR 500 – при обновлении

Сортировка сообщений в алфавитном порядке по пользовательскому значению поля, вставка разделителя между разными буквами

Я перечисляю все сообщения моего пользовательского типа сообщений «человек» в алфавитном порядке, отсортированные по пользовательскому полю last_name на странице.

Как бы вставить разделитель (например, изображение буквы) до начала диапазона букв?

Вот что я пытаюсь сделать:

алфавитный список с разделителями

Обновить:
Вот код, который я использую:

 <ul class="list-ensemble"> <?php query_posts('post_type=person&post_status=publish&meta_key=last_name&orderby=meta_value&order=ASC'); if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <li data-id="<?php the_ID(); ?>"> <a href="<?php the_permalink(); ?>" class="ensemble-single-link"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail(thumbnail); } ?> </a> </li> <?php endwhile; // end of the loop. ?> </ul> 

Solutions Collecting From Web of "Сортировка сообщений в алфавитном порядке по пользовательскому значению поля, вставка разделителя между разными буквами"

Попробуй это:

 <ul class="list-ensemble"> <?php query_posts('post_type=person&post_status=publish&meta_key=last_name&orderby=meta_value&order=ASC'); $current_letter = ''; if ( have_posts() ) while ( have_posts() ) : the_post(); $last_name = get_post_meta( $post->ID, 'last_name', true ); $letter = strtolower( substr( $last_name, 0, 1 ) ); if ( $letter != $current_letter ) { $current_letter = $letter; ?> <li class="letter"> <img src="<?php echo $letter; ?>.jpg" alt="<?php echo $letter; ?>" title="<?php echo $letter; ?>"> </li> <?php } ?> <li data-id="<?php the_ID(); ?>"> <a href="<?php the_permalink(); ?>" class="ensemble-single-link"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'thumbnail' ); } ?> </a> </li> <?php endwhile; // end of the loop. ?> </ul> 

Для каждого сообщения в цикле он извлекает поле last_name (это не добавит никаких запросов на страницу, потому что WordPress кэширует postmeta), а затем проверяет первую букву. Если это новая буква, она выводит элемент списка с изображением, названным в честь буквы (например, f.jpg ).

Ну, так как функции сортировки WordPress не включают такую ​​функциональность, вам, вероятно, следует спросить Мэтта Малленвега … ха-ха …

Нет, но на самом деле вы, вероятно, можете использовать query_posts () для каждой буквы (другими словами, вызовите цикл до 26 раз, один раз для каждой буквы. Затем для каждого цикла make включите некоторый код, который будет проверять, первая буква сообщения meta_value соответствует соответствующей букве. Если нет сообщений, соответствующих этой букве, то просто пропустите эту букву.

У вас в настоящее время есть только один цикл. Возможно, вам придется написать цикл for (), который, в свою очередь, будет генерировать каждый цикл wordpress.

Что-то вроде этого (просто черновик):

 <ul class="list-ensemble"> <? for ($i=65; $i<91; $i++) : // 65 through 90 represent the uppercase alphabet query_posts('post_type=person&post_status=publish&meta_key=last_name&orderby=meta_value&order=ASC'); //PUT SOME CODE HERE TO CHECK IF THE FIRST LETTER IS EQUAL TO $i //Set some variable $letter_matches == true if the letter matches. ?> <h3 class="letter"> <?php //ECHO THE LETTER CORRESPONDING TO $i HERE ?> </h3> <? if ( have_posts() and $letter_matches ) while ( have_posts() ) : the_post(); ?> <li data-id="<?php the_ID(); ?>"> <a href="<?php the_permalink(); ?>" class="ensemble-single-link"> <?php if ( has_post_thumbnail() ) { the_post_thumbnail(thumbnail); } ?> </a> </li> <?php endwhile; // end of the loop. ?> <?endfor; ?> </ul> 

Таким образом, у вас будет до 26 строк wordpress на странице. Я не уверен, как напрягается это на сервере, но он должен работать. Это первое, о чем я думал. Лемм знает, как все идет!