web-dev-qa-db-ja.com

サイズを取得する(size in Kb または注目の画像のMB)?

投稿ページにおすすめの画像情報を表示する必要があります。他の情報の中で私は画像(投稿の特集画像)のファイルサイズを表示する必要があります。

私はsingle.phpの中でこの機能を試しました。

<?php
function getSize($file){
   $bytes = filesize($file);
   $s = array('b', 'Kb', 'Mb', 'Gb');
   $e = floor(log($bytes)/log(1024));

  return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
}
?>

そしてそれを反映する:

<?php echo getSize('/wp-content/uploads/2014/06/some-file-name.jpg'); ?>

それは動作しますが、私は手動でコードでそれを入力するのではなく、自動的にtiが注目の画像のURLを取得するようにする必要がありますか?

例えば、私はこれを使用して注目の画像( "full")のURLをエコーし​​ます。

 <?php
 if ( has_post_thumbnail()) {
   $full_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full');
echo $thumb_image_url[0];
 }
?> 

それを結合するのを手伝ってもらえますか、それとも私に別の解決策を提供してください。

1
Advanced SEO

get_attached_file() を使用すると、次のことができます。

添付ファイルIDに基づいて添付ファイルのパスを取得します。

また、 get_post_thumbnail_id() 現在の投稿の投稿サムネイル、または$post_idパラメータを設定した場合は任意の投稿を決定します。使用例

$bytes = filesize(
    get_attached_file(
        get_post_thumbnail_id()
    )
);

size_format() を使用して

与えられたバイト数を人間が読める形式に変換する

$hr_size = size_format( $bytes );

実際に中間サイズの1つのサイズを取得したい場合は、上の図がフルイメージのファイルサイズを示しています。 image_get_intermediate_size() を使用してください。ここで、

メタデータ 'sizes'は、パラメータ$ size valueに使用できる互換性のあるサイズに使用されます。

つまり、データを取得するために wp_get_attachment_metadata() を使用します。さらに、パスを構築するために wp_upload_dir() が必要です。使用例

$upload_dir = wp_upload_dir();
$metadata_size = image_get_intermediate_size( 
    get_post_thumbnail_id(),
    'thumbnail'
);
$path_inter = $upload_dir[ 'basedir' ] . '/' . $metadata_size[ 'path' ];
$bytes = filesize(
    $path_inter
);
$hr_size = size_format( $bytes );
7
Nicolai