Создание «глоссария» сообщений WordPress определенного типа сообщения

Хорошо, вот что я хотел бы сделать. Я хочу создать «глоссарий», используя сообщения WordPress определенного типа сообщений. Другими словами, «заголовок» и описание «каждого словаря глоссария будет вытягиваться из значений мета в каждом столбце. В конце концов, он должен выглядеть примерно так, где каждая« запись »создается из сообщения:

A Android: Description Apple: Description Aztec: Description B Bacon: Description C Cat: Description Category: Description 

«Заголовок» и «описание» каждого словаря глоссария извлекаются из значений мета в соответствующих сообщениях. Код, который у меня есть до сих пор:

 // A function to display recent glossary posts function list_glossary_posts() { global $post; $args = array( 'posts_per_page' => -1, 'post_type' => 'crb_glossary', 'orderby'=> 'meta_value', 'meta_key' => 'glossary_title', 'order' => 'ASC' ); $postslist = get_posts( $args ); ob_start(); foreach ( $postslist as $post ) : setup_postdata( $post ); $glossary_title = get_post_custom_values($key = 'glossary_title'); $glossary_description = get_post_custom_values($key = 'glossary_description'); $glossary_letter = substr($glossary_title[0], 0, 1); ?> <h3><?php echo $glossary_letter; ?></h3> <p><a href="<?php the_permalink(); ?>"><?php echo $glossary_title[0]; ?></a>: <?php echo $glossary_description[0]; ?></p> <?php endforeach; wp_reset_postdata(); $output = ob_get_clean(); return $output; } // A shortcode for the glossary add_shortcode('list_glossary_posts', 'list_glossary_posts'); 

Вот с чем я борюсь. Я хочу, чтобы каждая уникальная переменная $glossary_letter отображалась один раз. Например, я не хочу этого:

 A Android: Description A Apple: Description A Aztec: Description B Bacon: Description C Cat: Description C Category: Description 

Помогите!

Solutions Collecting From Web of "Создание «глоссария» сообщений WordPress определенного типа сообщения"

Объявите переменную $ previous_letter, и в конце foreach дайте ей значение текущего $ glossary_letter. Перед отображением $ glossary_letter выполните условие if. Если $ glossary_letter отличается от $ previous_letter, тогда покажите это.

 $previous_letter = null; foreach ( $postslist as $post ) : setup_postdata( $post ); $glossary_title = get_post_custom_values($key = 'glossary_title'); $glossary_description = get_post_custom_values($key = 'glossary_description'); $glossary_letter = substr($glossary_title[0], 0, 1); ?> if ( $glossary_letter !== $previous_letter ): <h3><?php echo $glossary_letter; ?></h3> endif; <p><a href="<?php the_permalink(); ?>"><?php echo $glossary_title[0]; ?></a>: <?php echo $glossary_description[0]; ?></p> <?php $previous_letter = $glossary_letter; endforeach;