Intereting Posts
Управление пользовательским столбцом добавить класс "num" Как вставить логотип в заголовок? Отображать содержимое из пользовательского типа сообщения, если оно соответствует основной категории сообщений Странные iframes добавлены в wordpress 4.1 localhost Один для гуру: обновление до 3.x испортило только имена файлов с акцентированными символами как отображать все сообщения Пользовательские поля динамически? Как я могу узнать, какой шаблон используется для моего пользовательского типа сообщений? Добавить пункт меню в определенном порядке Проверьте, есть ли сообщение в прямом эфире перед отображением содержимого Разная структура / содержание сообщений из настраиваемого типа сообщений Отключение wp_tag_cloud () вывода встроенного CSS Separete trackbacks / pings и пронумерованные комментарии Изменить диапазон рейтинга в Link Manager Удалить эллипсы из выдержки Фильтр pre_get_posts не изменяет Mine / All / Pending

Как избежать дублирования одного и того же meta_value?

У меня есть «publication_year» как meta_key для некоторых изображений / вложений. Я хочу перечислить все meta_values ​​внутри html-таблицы, но я не хочу, чтобы значение same_year повторялось, мой код:

<?php $args = array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => -1, 'orderby' => 'menu_order', 'order' => ASC ); $attachments = get_posts( $args ); echo '<table id="bibliography">'; if ($attachments) { foreach ( $attachments as $post ) { setup_postdata($post); echo '<tr><td>'; if ( get_post_meta( $post->ID, '_publication_year', true )) { echo get_post_meta( $post->ID, '_publication_year', true ); }; echo '</td><td>'; echo '<a href="'; the_permalink(); echo '">'; echo get_the_excerpt(); echo '</a></td></tr>'; } } echo '</table>'; 

и с этим я получаю это:

 2002 imageDesc1 2003 imageDesc2 2003 imageDesc3 2003 imageDesc4 2004 imageDesc5 

но я хочу это:

 2002 imageDesc1 2003 imageDesc2 imageDesc3 imageDesc4 2004 imageDesc5 

Поэтому, если есть приложения с теми же годами публикации , я хочу, чтобы они группировались и не повторялись. Как я могу избежать дублирования одного и того же метазначения?

Один из способов – отслеживать, какие годы вы уже напечатали. Использование вашего кода:

 <?php $args = array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => -1, 'orderby' => 'menu_order', 'order' => ASC ); $attachments = get_posts( $args ); echo '<table id="bibliography">'; if ( $attachments ) { $already_printed_years = array(); foreach ( $attachments as $post ) { setup_postdata( $post ); echo '<tr><td>'; $year = get_post_meta( $post->ID, '_publication_year', true ); if ( get_post_meta( $post->ID, '_publication_year', true ) && ! in_array( $year, $already_printed_years ) ) { echo get_post_meta( $post->ID, '_publication_year', true ); $already_printed_years[] = $year; } echo '</td><td>'; echo '<a href="' . get_permalink( $post->ID ) . '">'; echo get_the_excerpt(); echo '</a></td></tr>'; } } echo '</table>';