it-swarm.com.de

Zählen Sie die Anzahl der auf der Website hochgeladenen Bilder

Ich erwähne "vollständige Website", weil ich nicht die Anzahl der Anhänge für einen Beitrag benötige (wie in vielen Fragen beantwortet). Grundsätzlich benötige ich eine Funktion, die die Anzahl der hochgeladenen Bilder (angehängt und nicht angehängt) auf der Website ohne Nicht-Bilddateien zurückgibt.

Ich habe einige Nachforschungen angestellt, aber es gibt keine direkte Funktion, die nur die Bilder zählt. Was ist der einfachste Weg, dies zu tun?

4
faq

Es gibt eine praktische integrierte Funktion , nämlich wp_count_attachments().

Wir können Bilder mit wp_count_attachments( $mime_type = 'image' ) herausfiltern, die ein Objekt wie das folgende zurückgeben:

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

So können wir den Einzeiler verwenden:

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

für die Gesamtzahl der Bilder.

6
birgire

Der einfachste Weg, den ich kenne, ist:

global $wpdb ;

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

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

Sie können auch WP_Query verwenden, dies ist jedoch teurer:

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

$count = $attatchments->found_posts ;

Hinweis: Setzen von 'posts_per_page' => 0 und Lesen von found_posts ist eine Optimierung bei der Verwendung von WP_Query in Fällen wie diesem, die ich vor ein paar Tagen aus der Antwort auf eine andere Frage hier auf WPSE gelernt habe ... Ich weiß nicht mehr, welche Frage es war , sonst würde ich den Autor für den Tipp gutschreiben.