web-dev-qa-db-fra.com

Compter le nombre d'images téléchargées sur le site

Je mentionne "site complet" car je n'ai pas besoin du nombre de pièces jointes sur un poste (comme cela a été répondu à de nombreuses questions). J'ai essentiellement besoin d'une fonction qui renvoie le nombre d'images téléchargées (attachées et non attachées) sur le site Web, à l'exclusion des fichiers non-image.

J'ai fait des recherches, mais il n'y a pas de fonction directe qui compte uniquement les images. Quel est le moyen le plus simple de faire cela?

4
faq

Il y a une fonction pratique intégrée , à savoir wp_count_attachments().

Nous pouvons filtrer les images avec wp_count_attachments( $mime_type = 'image' ) qui renvoie un objet tel que:

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

Nous pouvons donc utiliser le one-liner:

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

pour le nombre total d'images.

6
birgire

Le moyen le plus simple que je connaisse est:

global $wpdb ;

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

$count = (int) $wpdb->get_var ($sql) ;

Vous pouvez également utiliser WP_Query, même si cela coûte plus cher:

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

$count = $attatchments->found_posts ;

remarque: configurer 'posts_per_page' => 0 et lire found_posts est une optimisation lors de l’utilisation de WP_Query dans des cas comme celui-ci que je viens d’apprendre de la réponse à une autre question sur WPSE il ya quelques jours ... sinon, je donnerais un pourboire à l'auteur.