web-dev-qa-db-ja.com

すべての注目画像サイズとそのURLを取得する方法

注目の画像のすべての登録サイズを取得する標準的な方法はありますか?さまざまなサイズを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'},
]

このようなものはありますか、それとも私はすべてのアップロードフォルダのファイル名を正規表現でスキャンする必要がありますか?

5
NoOne

それを正確に行う機能を覚えていませんが、API全体で簡単に実現できます。

  1. get_post_thumbnail_id() で添付ファイルIDを取得します
  2. get_intermediate_image_sizes() で利用可能なサイズを取得します
  3. サイズごとに wp_get_attachment_image_src() を使用します。これにより、必要なデータ(URLおよびディメンション)が正確に得られます。
7
Rarst

IDを取得したら( get_post_thumbnail_id($ YOUR_POST_ID) )、アップロード元のURLと添付ファイルのメタデータを知る必要があります。

Uploads base urlwp_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;
}
0
jave.web

サイズに応じて画像を取得するには、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) );

これはあなたを助けるかもしれません。

0
Ajay Khandal