В процессе создания системы контроля заказов с применением 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, чтобы получить массив другого рода, вроде отображения иконок для каждого отдельного типа файлов.

Надеюсь, этот маленький трюк вам пригодится.

Источник: doitwithwp.com

Вам понравился материал?

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.