Как вывести список файлов, присоединенных к посту

Как вывести список файлов, присоединенных к посту | n-wp.ru Настройки
Пример функции, выводящей список файлов, присоединенных к посту. Файлы разных типов имеют индивидуальное оформление.

WordPress позволяет присоединять к посту практически любые файлы — достаточно воспользоваться кнопкой добавления медиа-контента. Закачанные таким образом файлы записываются в библиотеку медиафайлов, а в базе данных делается запись, что эти файлы присоединены к определенному посту.

Как вывести список файлов, присоединенных к посту (3)

Я уже писал о плагине Auto Attachments, который позволяет выводить список файлов, присоединенных к посту.

Такой список может быть полезен, например, если вы публикуете статью, в которой используются разные файлы — архивы, электронные документы, мультимедийный контент. Иногда нужно собрать все используемые в посте файлы отдельным списком — для этого плагин подходит идеально. Однако есть возможность вывести список присоединенных к посту файлов и без использования дополнительных плагинов, причем этот список можно оформить по своему усмотрению. Давайте посмотрим, как это можно сделать.

Создадим функцию, которая будет автоматически в конце каждого поста выводить список присоединенных постов. Для этого нужно вставить в файл functions.php используемой в блоге темы:

add_filter( 'the_content', 'my_the_content_filter' );
function my_the_content_filter( $content ) {
	global $post;

	if ( is_single() && $post->post_type == 'post' && $post->post_status == 'publish' ) {
		$attachments = get_posts( array(
			'post_type' => 'attachment',
			'posts_per_page' => 0,
			'post_parent' => $post->ID
		) );

		if ( $attachments ) {
			$content .= '<h3>Присоединенные файлы</h3>';
			$content .= '<ul class="post-attachments">';
			foreach ( $attachments as $attachment ) {
				$class = "post-attachment mime-" . sanitize_title( $attachment->post_mime_type );
				$title = wp_get_attachment_link( $attachment->ID, false );
				$content .= '<li class="' . $class . '">' . $title . '</li>';
			}
			$content .= '</ul>';
		}
	}

	return $content;
}

В конце каждого поста появится список всех файлов, добавленных во время редактирования поста в библиотеку медиафайлов.

Как вывести список файлов, присоединенных к посту (2)

Для того, чтобы сделать этот список более привлекательным, давайте для каждого типа файлов добавим индивидуальную иконку. Для этого нужно создать файл attachments.css, расположенный рядом с файлом style.css, и вставить в него оформление для списка присоединенных файлов разного типа:

.post-attachment.mime-imagejpeg,
.post-attachment.mime-imagepng {
	background-image: url(icons/document-image.png);
}

.post-attachment.mime-applicationzip {
	background-image: url(icons/document-zipper.png);
}

.post-attachment.mime-applicationpdf {
	background-image: url(icons/document-pdf.png);
}

.post-attachment.mime-applicationx-shockwave-flash {
	background-image: url(icons/document-flash-movie.png);
}

.post-attachment.mime-applicationmsword {
	background-image: url(icons/document-word.png);
}

Если хотите, чтобы все типы файлов имели одинаковые иконки, то тогда содержимое файла attachments.css должно быть примерно таким:

ul.post-attachments {
	list-style: none;
	margin-left: 0;
}

li.post-attachment {
	background: url(icons/document.png) 0 4px no-repeat;
	padding-left: 24px;
}

Для того, чтобы файл стилей для списка присоединенных файлов использовался автоматически, добавьте в functiond.php:

add_action( 'wp_print_styles', 'my_enqueue_style' );
function my_enqueue_style() {
	wp_enqueue_style( 'post-attachemnts', get_stylesheet_directory_uri() . '/attachments.css', array(), null );
}

Как вывести список файлов, присоединенных к посту (1)

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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