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.


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

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

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

)

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

Ich habe mehrere Methoden getestet und diese funktionierte schließlich. (WP + WooCommerce + benutzerdefiniertes Thema)
Juraj.Lorinc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.