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

Как подсчитать количество файлов разных форматов, присоединенных к посту | n-wp.ru
Примеры кодов, подсчитывающих количество файлов разных форматов, закачанных в блог при редактировании поста.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

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

Для подсчета изображений я в цикл вывода содержимого постов вставил код подсчета изображений:

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;
?>
Создай свой первый сайт на WordPress

tiaurus

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

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