web-dev-qa-db-ja.com

ウェブサイトにアップロードされた画像の数を数える

私は「多くの質問で答えられるように」私が1つの記事に添付ファイルの数を必要としないので「完全なウェブサイト」に言及します。私は基本的にウェブサイトにアップロードされた画像の数(添付ファイルと未添付ファイル)を返す関数が必要です。ただし、非画像ファイルは除きます。

私はいくつかの研究をしましたが、画像だけを数える直接的な機能はありません。これを行うための最も簡単な方法は何ですか?

4
faq

便利な 組み込み関数 、つまり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' ) );

画像の総数について。

6
birgire

私が知っている最も簡単な方法は次のとおりです。

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で別の質問に対する回答から学んだばかりです。さもなければ、私は作者にチップを貸します。