如何获取主题中设置的所有可能缩略图大小的列表


24

我可以在插件中使用什么功能来获取子主题中定义的每个图像大小(最好在数组中)的尺寸?

只是为了澄清,我不是在问如何创建新的图像尺寸。


搜索这样的东西,但有一个界面,遇到了插件Additional images size(zui)。它有500天没有更新,但通过了第一批测试。
brasofilo 2012年

Answers:


41

在这里找到它。答案是:

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

将其添加到functions.php文件的顶部将不起作用,但是将其保留在该文件的任何函数中,它将起作用。
kevnk


13

WordPress核心没有用于获取中间图像大小(即宽度和高度)的本机方法,但是以下辅助函数将获取所有已注册图像大小及其尺寸:

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

它将输出类似于以下内容的结果:

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可获得更完整的答案。其他返回其他大小,但不返回默认大小。
Cazuma Nii Cavalcanti

2
如果使用的话,甚至更好,因为WP 4.4起$default_image_sizes = get_intermediate_image_sizes();就有一个medium_large尺寸。
natebeaty

好建议;我已根据您的建议更新了答案。
rjb

ACF用它的媒体阵列宠坏了我。
亚当·帕特森

3

如果其他答案无效,请使用此代码,因此它将在WordPress初始化后运行。

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

我已经测试了几种方法,这种方法终于奏效了。(WP + WooCommerce +自定义主题)
Juraj.Lorinc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.