Подсчитайте количество изображений, увеличенных на веб-сайте

Я упоминаю «полный сайт», потому что мне не нужно количество вложений в одном сообщении (как ответ на многие вопросы). Мне в основном нужна функция, которая возвращает количество загруженных изображений (прикрепленных и непривязанных) на веб-сайте, исключая файлы без изображения.

Я провел некоторое исследование, но нет никакой прямой функции, которая учитывала бы только изображения. Какой самый простой способ сделать это?

Solutions Collecting From Web of "Подсчитайте количество изображений, увеличенных на веб-сайте"

Есть удобная встроенная функция , а именно wp_count_attachments() .

Мы можем отфильтровывать изображения с помощью wp_count_attachments( $mime_type = 'image' ) который возвращает объект, например:

 stdClass Object ( [image/gif] => 9 [image/jpeg] => 121 [image/png] => 20 [image/x-icon] => 6 [trash] => 0 ) 

Таким образом, мы можем использовать однострочный:

 $count = array_sum( (array) wp_count_attachments( $mime_type = 'image' ) ); 

для общего количества изображений.

Самый простой способ, который я знаю, это:

 global $wpdb ; $sql = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'attachment'" ; $count = (int) $wpdb->get_var ($sql) ; 

Вы также можете использовать WP_Query, потому что это стоит дороже:

 $args = array ( 'post_type' => 'attachment', 'post_status' => 'inherit', 'posts_per_page' => 0, ) ; $attatchments = new WP_Query ($args) ; $count = $attatchments->found_posts ; 

note: установка 'posts_per_page' => 0 и чтение found_posts – это оптимизация при использовании WP_Query в таких случаях, что я только что узнал из ответа на другой вопрос здесь, на WPSE, несколько дней назад … Я не помню, какой вопрос это был, иначе я бы зачислил автора за подсказку.