web-dev-qa-db-ja.com

Wpメディアライブラリからすべての画像とそのサムネイルを取得する方法

私はWordPressメディアライブラリ内のすべての画像を返す関数を持っていますが、問題はそれが画像のすべての画像サイズを返すわけではないということです。

function get_images_highcompress_data()
{

     $args = array(
      'post_type' => 'attachment',
      'post_mime_type' => 'image/jpeg,image/jpg,image/png',
      'post_status' => 'inherit',
      'posts_per_page' => -1,
      'orderby' => 'id',
      'order' => 'ASC'
  );
  $query_images = new WP_Query( $args );
  $images = array();
  foreach ( $query_images->posts as $image) {
      $images[]= $image->guid;
  }

Wpメディアライブラリからすべての画像のURLをすべてのサイズで取得できる他の関数はありますか。

例えば。 Image01.jpgimage01-500X500.jpgImage01-1080X1080.jpgImage02.jpgimage02-500X500.jpgImage02-1080X1080.jpg 1つの配列でこのようになります。

2
David Cring

これがあなたができることです。

  1. 利用可能なすべてのサムネイルサイズのリストを取得する
  2. すべての添付ファイルを照会する
  3. 添付ファイルのサイズごとに、そのURLを取得して配列に保存します。

コードをこれに変更しましょう。

function get_images_highcompress_data() {
    $args = array(
        'post_type' => 'attachment',
        'post_mime_type' => 'image/jpeg,image/jpg,image/png',
        'post_status' => 'inherit',
        'posts_per_page' => -1,
        'orderby' => 'id',
        'order' => 'ASC'
    );
    // Get all the available thumbnail sizes
    $sizes = get_intermediate_image_sizes();
    // Query the attachments
    $query_images = new WP_Query( $args );
    $images = array();
    // Run a loop
    if ( $query_images->have_posts() ){
        while ($query_images->have_posts()){
            $query_images->the_post();
            // For each attachment size, store its URL in an array
            foreach ( $sizes as $key => $size ) {
                $thumbnails[$key] = wp_get_attachment_image_src( get_the_ID(), $size)[0];
            }
            $images = array_merge( $thumbnails , $images );
        }
        return $images;
    }
}

返される配列は次のようになります。

[0] => thumbnail-url,
[1] => medium-url,
[2] => large-url,

等々。

1
Jack Johansson