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?
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.
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.