В процессе создания системы контроля заказов с применением Custom Meta Boxes для сбора и хранения пользовательских данных о каждом из размещенных заказов, я столкнулся с необходимостью загружать документы (инвойсы и прочее) для каждого заказа, а затем отображать их в рамках размещенного заказа для авторизованных пользователей.
Чтобы решить данную задачу, был создан настраиваемый тип поста с использованием функции wp_get_attachment_link в сочетании с запросом get_posts для того, чтобы получить все прикрепленные файлы к каждому посту и отображать эти файлы как список со ссылками на каждый отдельно взятый документ.
В цикле мной был использован следующий код:
<?php // get post attachments $post_attachments = get_posts( array ( 'post_type' => 'attachment', 'post_parent' => $post->ID )); ?> <ul> <?php foreach ( $post_attachments as $post_attachment ) { echo '<li>' . wp_get_attachment_link( $post_attachment->ID, '', false, false ) . '</li>'; } ?> </ul>
Первая половина кода выполняет запрос get_posts для поиска всех вложений в посте, который мы в данный момент просматриваем (вложения — это отдельный тип размещенных материалов, и у них есть родительский пост, с которым они связаны).
Вторая половина кода берет этот массив и для каждого выполняет функцию wp_get_attachment_link, чтобы получить ссылки на вложенные файлы с использованием заголовков для файлов, добавленных к тексту.
В итоге у вас получится список всех вложенных в пост материалов (правда неупорядоченный), наподобие того, что на данном изображении:
Вы также можете изменить значение аргументов для wp_get_attachment_link, чтобы получить массив другого рода, вроде отображения иконок для каждого отдельного типа файлов.
Надеюсь, этот маленький трюк вам пригодится.
Комментарии к записи: 0