列出所有图像大小,包括自定义 (WordPress)

use*_*143 1 php wordpress foreach

这个脚本主要工作:

$_wp_additional_image_sizes[$name] = array($width, $height, $crop);
$image_sizes = get_intermediate_image_sizes();
foreach ($image_sizes as $size) {
    echo $size . ' ';
    echo $image_sizes[ $size ][ 'width' ] = intval( get_option( "{$size}_size_w" ) );
    echo ' x ';
    echo $image_sizes[ $size ][ 'height' ] = intval( get_option( "{$size}_size_h" ) )  . '<br />';
}
Run Code Online (Sandbox Code Playgroud)

默认的 WordPress 图像大小(缩略图、中、大等)显示了它们的正确尺寸。

但问题是自定义图像大小始终将其宽度和高度显示为 0。

这是返回的内容:

thumbnail 150 x 150
medium 300 x 300
medium_large 768 x 0
large 1024 x 1024
post-thumbnail 0 x 0
Custom Blog Image 0 x 0
Additional Food Image 0 x 0
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

PS:我已经注册了这样的附加图像尺寸:

add_image_size( 'Custom Blog Image', 1600, 800, $crop = true );
add_image_size( 'Additional Food Image', 800, 600, $crop = true );
Run Code Online (Sandbox Code Playgroud)

小智 6

试试这个代码

此函数将返回所有注册的默认尺寸,包括高度、宽度

function your_thumbnail_sizes() {
        global $_wp_additional_image_sizes;
        $sizes = array();
        $rSizes = array();
        foreach (get_intermediate_image_sizes() as $s) {
            $sizes[$s] = array(0, 0);
            if (in_array($s, array('thumbnail', 'medium', 'medium_large', 'large'))) {
                $sizes[$s][0] = get_option($s . '_size_w');
                $sizes[$s][1] = get_option($s . '_size_h');
            }else {
                if (isset($_wp_additional_image_sizes) && isset($_wp_additional_image_sizes[$s]))
                    $sizes[$s] = array($_wp_additional_image_sizes[$s]['width'], $_wp_additional_image_sizes[$s]['height'],);
            }
        }
        foreach ($sizes as $size => $atts) {
            $rSizes[$size] = $size . ' ' . implode('x', $atts);
        }
        return $rSizes;
    }
Run Code Online (Sandbox Code Playgroud)

像这样

Array
(
    [thumbnail] => thumbnail 150x150
    [medium] => medium 300x300
    [medium_large] => medium_large 768x0
    [large] => large 1024x1024
    [custom-size] => custom-size 220x180
)
Run Code Online (Sandbox Code Playgroud)


小智 5

从 WP 5.3 开始,使用此功能就足够了:

wp_get_registered_image_subsizes();
Run Code Online (Sandbox Code Playgroud)