注目の画像のすべての登録サイズを取得する標準的な方法はありますか?さまざまなサイズをadd_image_size()
に登録できます。私が必要としているのは、投稿の特集画像のすべてのサイズを取得することです。このようなもの:
$ sizes = get_post_feature_image_sizes($ postid);
...これは、次のようなオブジェクトの配列を返します(ここではJSON形式です)。
[
{width: 200, height: 300, url: 'http://.........../wp-content/uploads/2015/10/file-200x300.jpg'},
{width: 300, height: 400, url: 'http://.........../wp-content/uploads/2015/10/file.jpg'},
]
このようなものはありますか、それとも私はすべてのアップロードフォルダのファイル名を正規表現でスキャンする必要がありますか?
それを正確に行う機能を覚えていませんが、API全体で簡単に実現できます。
get_post_thumbnail_id()
で添付ファイルIDを取得しますget_intermediate_image_sizes()
で利用可能なサイズを取得しますwp_get_attachment_image_src()
を使用します。これにより、必要なデータ(URLおよびディメンション)が正確に得られます。IDを取得したら( get_post_thumbnail_id($ YOUR_POST_ID) )、アップロード元のURLと添付ファイルのメタデータを知る必要があります。
Uploads base urlは wp_upload_dir() によって返される配列の中にあります。
添付ファイルのメタデータは wp_get_attachment_metadata() で取得できます。
これは私が書いた便利な関数で、これは任意の画像の添付、単なる特徴ではないのURLデータを準備します。
function prepareImageData( $attachment_id ){
$uploads_baseurl = wp_upload_dir()['baseurl'];
$prepared = [];
$data = wp_get_attachment_metadata($attachment_id);
$prepared = [
'mime_type' => get_post_mime_type($attachment_id),
'url' => $uploads_baseurl.'/'.$data['file'],
'sizes' => [],
];
foreach( $data['sizes'] as $size => $sizeInfo ){
$prepared['sizes'][$size] = [
'url' => $uploads_baseurl.'/'.$sizeInfo['file'],
];
}
return $prepared;
}
サイズに応じて画像を取得するには、the_post_thumbnail( $size, $attr )
であるwordpressの事前定義関数を使用できます。
定義済みのメディアサイズを使用できます。
the_post_thumbnail();
the_post_thumbnail( 'thumbnail' ); // Thumbnail (default 150px x 150px max)
the_post_thumbnail( 'medium' ); // Medium resolution (default 300px x 300px max)
the_post_thumbnail( 'large' ); // Large resolution (default 640px x 640px max)
the_post_thumbnail( 'full' ); // Full resolution (original size uploaded)
the_post_thumbnail( array(100, 100) );
これはあなたを助けるかもしれません。