Cara mendapatkan daftar semua ukuran thumbnail yang mungkin diatur dalam tema

24

Fungsi apa yang dapat saya gunakan dalam sebuah plugin untuk mendapatkan dimensi dari setiap ukuran gambar (dalam array lebih disukai) yang didefinisikan dalam tema anak?

Hanya untuk klarifikasi, saya tidak bertanya bagaimana cara membuat ukuran gambar baru.

m-torin
sumber
Mencari sesuatu seperti ini, tetapi dengan antarmuka, menemukan plugin Ukuran gambar tambahan (zui) . Ini memiliki 500 hari tanpa pembaruan tetapi lulus batch pertama tes.
brasofilo

Jawaban:

41

Ditemukan di sini . Jawabannya adalah:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';
m-torin
sumber
Menambahkannya ke bagian atas functions.phpfile tidak akan berfungsi, tetapi tempelkan di salah satu fungsi Anda di file itu dan itu akan berfungsi.
kevnk
14

Jika Anda hanya perlu nama semua ukuran gambar, Anda dapat menggunakan get_intermediate_image_sizes :

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
sqren
sumber
13

WordPress inti tidak memiliki metode asli untuk mendapatkan ukuran gambar menengah (yaitu lebar dan tinggi), tetapi fungsi pembantu berikut akan mendapatkan semua ukuran gambar yang terdaftar bersama dengan dimensinya:

/**
 * Get all the registered image sizes along with their dimensions
 *
 * @global array $_wp_additional_image_sizes
 *
 * @link http://core.trac.wordpress.org/ticket/18947 Reference ticket
 *
 * @return array $image_sizes The image sizes
 */
function _get_all_image_sizes() {
    global $_wp_additional_image_sizes;

    $default_image_sizes = get_intermediate_image_sizes();

    foreach ( $default_image_sizes as $size ) {
        $image_sizes[ $size ][ 'width' ] = intval( get_option( "{$size}_size_w" ) );
        $image_sizes[ $size ][ 'height' ] = intval( get_option( "{$size}_size_h" ) );
        $image_sizes[ $size ][ 'crop' ] = get_option( "{$size}_crop" ) ? get_option( "{$size}_crop" ) : false;
    }

    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) {
        $image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
    }

    return $image_sizes;
}

Yang akan menampilkan hasil yang mirip dengan:

Array
(
    [thumbnail] => Array
        (
            [width] => 150
            [height] => 150
            [crop] => 1
        )

    [medium] => Array
        (
            [width] => 300
            [height] => 300
            [crop] => 
        )

    [medium_large] => Array
        (
            [width] => 768
            [height] => 0
            [crop] => 
        )

    [large] => Array
        (
            [width] => 1024
            [height] => 1024
            [crop] => 
        )

)
rjb
sumber
3
+1 untuk jawaban yang lebih lengkap. Yang lain mengembalikan ukuran tambahan tetapi tidak yang standar.
Cazuma Nii Cavalcanti
2
Bahkan lebih baik jika Anda menggunakan $default_image_sizes = get_intermediate_image_sizes();karena ada medium_largeukuran sejak WP 4.4.
natebeaty
Saran yang bagus; Saya telah memperbarui jawabannya dengan rekomendasi Anda.
rjb
ACF telah memanjakan saya dengan susunan medianya.
Adam Patterson
3

Jika jawaban lain tidak berhasil, gunakan kode ini, sehingga akan berjalan setelah WordPress diinisialisasi.

add_action('init', 'get_all_image_sizes');

function get_all_image_sizes(){
    global $_wp_additional_image_sizes; 
    print '<pre>'; 
    print_r( $_wp_additional_image_sizes ); 
    print '</pre>';
}
Shoaib Iqbal
sumber
Saya telah menguji beberapa metode dan yang ini akhirnya berhasil. (WP + WooCommerce + tema khusus)
Juraj.Lorinc