Intereting Posts
Редактирование определенных узлов в WP_Admin_Bar По умолчанию галерея WordPress или очень легкая альтернатива этому? Есть ли бесплатное (или дешевое) программное обеспечение, которое можно использовать для тестирования функциональности WordPress? Как скрыть имя пользователя при регистрации wordpress? Как получить главную страницу div контейнера сайта WordPress для отображения полной ширины? Невозможно использовать admin_enqueue_scripts или wp_enqueue_script Как настроить WordPress для обработки 75 000 страниц? Добавить текст описания в поле ввода для новых полей профиля Пользовательская форма регистрации с различным процессом регистрации на основе выбранного Настройка Avada & WooCommerce – Замена product_title в woo-config.php set_post_format, вызванный после wp_update_post при использовании массового редактирования? использовать (wplang) переключатель в интерфейсе Каков наилучший способ для дезинфекции данных? Проблема с сохранением большого объема данных в postmeta / usermeta Hack nav menu, чтобы добавить gettext () в пункты меню?

Создание «глоссария» сообщений 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;