Иногда для лучшего восприятия информации и подогрева читателей бывает необходимо показать, сколько каких файлов включено в пост. Сейчас все решает визуальное восприятие, и порой изображения, видео и аудио составляют большую часть контента. По крайней мере в одном из блогов присоединенные файлы играют не меньшую роль, чем слова, а иногда и вовсе составляют все содержимое публикаций, поэтому я решил выводить помимо количества просмотров и комментариев еще и информацию о том, сколько разных мультимедийных фалов вставлено в посты.
Для подсчета изображений я в цикл вывода содержимого постов вставил код подсчета изображений:
get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_parent = '$post->ID' AND post_type = 'attachment' AND post_mime_type = 'image/jpeg'" );
$img_png_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_parent = '$post->ID' AND post_type = 'attachment' AND post_mime_type = 'image/png'" );
$img_gif_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_parent = '$post->ID' AND post_type = 'attachment' AND post_mime_type = 'image/gif'" );
$img_count = $img_jpg_count+$img_png_count+$img_gif_count;
?>
Этот код считает количество файлов, присоединенных к посту, выбирая только изображения, используя post_type = ‘attachment’ AND post_mime_type. Почему-то WordPress отказался считать файлы всех изображений по общему указанию post_mime_type = ‘image’, поэтому я подсчитал количество изображений в форматах GIF, PNG и JPG, а потом просто суммировал эти значения. Чтобы вывести количество изображений, вставленных в пост путем стандартной загрузки в медиатеку, нужно просто в нужно месте использовать:
</pre>
<p>Сейчас закачивать в блог можно не только изображения, но и аудио и видео. Подобным же образом можно подсчитывать и их количество в посте. Например, количество файлов формата MP3, присоединенных к посту, выводится так:</p>
<pre>get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_parent = '$post->ID' AND post_type = 'attachment' AND post_mime_type = 'audio/mpeg'" );
echo $audio_count;
?> [info txt=”Под словами присоединенный к посту или вставленный в пост я имею ввиду файлы, закачанные в блог стандартным способом – с помощью добавления файлов в библиотеку при редактировании поста.”] Как видим, результат достигается путем подсчета вложений, используя post_mime_type. Распространенные MIME-типы файлов:
- image/jpeg
- image/png
- image/gif
- video/mpeg
- video/mp4
- video/quicktime
- video/x-flv
- text/csv
- text/plain
- text/xml
- audio/ac3
- audio/MPA
- audio/mpeg
- application/pdf
Чтобы подсчитывать общее количество всех вложений, можно создать функцию. Этот код нужно вставить в файл functions.php используемой вами темы:
function attachment_count() {
global $post;
$attachments = get_posts( array(
'post_type' => 'attachment',
'posts_per_page' => -1
) );
$att_count = 0;
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
if ( 'gallery' == get_post_type($attachment->post_parent) ) {
$att_count = $att_count + 1;
}
}
echo $att_count;
}
} Для вывода результата нужно в файле single.php использовать:
</pre>
<p>Тот же результат можно получит немного по-другому:</p>
<pre>
get_var("SELECT COUNT(ID) FROM {$wpdb->prefix}posts WHERE post_type = 'attachment' && ID=$id");
echo $total_attachments;
?>







