テーマ内に設定されているすべての可能なサムネイルサイズのリストを取得する方法


24

子テーマで定義されているすべての画像サイズ(できれば配列内)のサイズを取得するために、プラグインでどの関数を使用できますか?

明確にするためだけに、新しい画像サイズを作成する方法を尋ねているわけではありません。


このようなものを探していますが、インターフェースを使用して、プラグインAdditional image Sizes(zui)を見つけました。更新なしで500日間ですが、テストの最初のバッチに合格しました。
ブラソフィロ

回答:


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を入力すると、より完全な回答が得られます。その他は追加のサイズを返しますが、デフォルトのサイズは返しません。
カズマニイカヴァルカンティ

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.