Cách nhận danh sách tất cả các kích thước hình thu nhỏ có thể được đặt trong một chủ đề


24

Tôi có thể sử dụng chức năng nào trong một plugin để có được kích thước của mọi kích thước hình ảnh (tốt nhất là trong một mảng) được xác định trong một chủ đề con?

Chỉ để làm rõ tôi không hỏi làm thế nào để tạo một kích thước hình ảnh mới.


Tìm kiếm một cái gì đó như thế này, nhưng với một giao diện, đã tìm thấy plugin Kích thước hình ảnh bổ sung (zui) . Nó có 500 ngày không cập nhật nhưng đã vượt qua đợt thử nghiệm đầu tiên.
brasofilo

Câu trả lời:


41

Tìm thấy nó ở đây . Câu trả lời là:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';

Thêm nó vào đầu functions.phptệp sẽ không hoạt động, nhưng hãy gắn nó vào bất kỳ chức năng nào của bạn trong tệp đó và nó sẽ hoạt động.
kevnk

13

Nếu bạn chỉ cần tên của tất cả các kích thước hình ảnh, bạn có thể sử dụng get_inter liền_image_sizes :

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>

13

Lõi WordPress không có phương thức riêng để lấy kích thước hình ảnh trung gian (nghĩa là chiều rộng và chiều cao), nhưng chức năng trợ giúp sau sẽ nhận được tất cả các kích thước hình ảnh đã đăng ký cùng với kích thước của chúng:

/**
 * 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;
}

Mà sẽ cho kết quả tương tự như:

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] => 
        )

)

3
+1 cho câu trả lời đầy đủ hơn. Những cái khác trả về kích thước bổ sung nhưng không phải là mặc định.
Cazuma Nii Cavalcanti

2
Thậm chí tốt hơn nếu bạn sử dụng $default_image_sizes = get_intermediate_image_sizes();như có một medium_largekích thước kể từ WP 4.4.
natebeaty

Gợi ý tốt; Tôi đã cập nhật câu trả lời với đề nghị của bạn.
rjb

ACF đã làm hỏng tôi với mảng truyền thông của nó.
Adam Patterson

3

Nếu câu trả lời khác không hoạt động, hãy sử dụng mã này, vì vậy nó sẽ chạy sau khi WordPress được khởi tạo.

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>';
}

Tôi đã thử nghiệm một số phương pháp và cuối cùng phương pháp này đã hoạt động. (WP + WooCommerce + chủ đề tùy chỉnh)
Juraj.Lorinc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.