So erhalten Sie eine Liste aller möglichen Miniaturbildgrößen, die in einem Thema festgelegt sind

24

Welche Funktion kann ich in einem Plugin verwenden, um die Abmessungen jeder Bildgröße (vorzugsweise in einem Array) zu ermitteln, die in einem untergeordneten Thema definiert ist?

Nur zur Verdeutlichung frage ich nicht, wie man eine neue Bildgröße erstellt.

m-torin
quelle
Auf der Suche nach so etwas, aber mit einer Benutzeroberfläche, stieß das Plugin Zusätzliche Bildgrößen (zui) . Es hat 500 Tage ohne Updates, aber die ersten Tests bestanden.
Brasofilo

Antworten:

41

Habe es hier gefunden . Die Antwort ist:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';
m-torin
quelle
Das Hinzufügen zum Anfang der functions.phpDatei funktioniert nicht, aber Sie können es in eine Ihrer Funktionen in dieser Datei einfügen, und es sollte funktionieren.
kevnk
13

Wenn Sie nur die Namen aller Bildgrößen benötigen, können Sie get_intermediate_image_sizes verwenden :

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

WordPress Core hat keine native Methode zum Abrufen von Zwischenbildgrößen (dh Breite und Höhe), aber die folgende Hilfsfunktion ruft alle registrierten Bildgrößen zusammen mit ihren Abmessungen ab:

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

Welche Ergebnisse ausgeben ähnlich wie:

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
quelle
3
+1 für eine vollständigere Antwort. Die anderen geben zusätzliche Größen zurück, jedoch keine Standardgrößen.
Cazuma Nii Cavalcanti
2
Noch besser, wenn Sie verwenden, $default_image_sizes = get_intermediate_image_sizes();da es eine medium_largeGröße seit WP 4.4 gibt.
Natebeaty
Guter Vorschlag; Ich habe die Antwort mit Ihrer Empfehlung aktualisiert.
rjb
ACF hat mich mit seinem Media Array verwöhnt.
Adam Patterson
3

Wenn die andere Antwort nicht funktioniert hat, verwenden Sie diesen Code, damit er nach der Initialisierung von WordPress ausgeführt wird.

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
quelle
Ich habe mehrere Methoden getestet und diese funktionierte schließlich. (WP + WooCommerce + benutzerdefiniertes Thema)
Juraj.Lorinc