Cum să obții o listă cu toate dimensiunile posibile ale miniaturilor setate într-o temă

11 nov. 2011, 20:03:27
Vizualizări: 69.9K
Voturi: 36

Ce funcție pot folosi într-un plugin pentru a obține dimensiunile fiecărei mărimi de imagine (preferabil într-un array) care este definită într-o temă copil?

Pentru clarificare, nu întreb cum să creez o nouă dimensiune de imagine.

1
Comentarii

Căutând ceva similar, dar cu o interfață, am dat peste pluginul Dimensiuni suplimentare pentru imagini (zui). Nu a primit actualizări de 500 de zile, dar a trecut prima serie de teste.

brasofilo brasofilo
6 iul. 2012 04:51:25
Toate răspunsurile la întrebare 8
4
61

Am găsit aici. Răspunsul este:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';
11 nov. 2011 20:09:03
Comentarii

Adăugarea acestuia în partea de sus a fișierului functions.php nu va funcționa, dar dacă îl introduceți în oricare dintre funcțiile din acel fișier, ar trebui să funcționeze.

kevnk kevnk
15 aug. 2017 23:40:43

Aceasta listează doar dimensiunile adiționale, nu dimensiuni precum "large"

Fanky Fanky
19 ian. 2021 11:37:37

Răspuns incorect, nu ar trebui acceptat ca atare.

User User
8 nov. 2022 07:02:45
7
36

Nucleul WordPress nu are o metodă nativă pentru obținerea dimensiunilor intermediare ale imaginilor (adică lățime și înălțime), dar următoarea funcție helper va returna toate dimensiunile de imagine înregistrate împreună cu dimensiunile lor:

/**
 * Obține toate dimensiunile de imagine înregistrate împreună cu dimensiunile lor
 *
 * @global array $_wp_additional_image_sizes
 *
 * @link http://core.trac.wordpress.org/ticket/18947 Ticket de referință
 *
 * @return array $image_sizes Dimensiunile imaginilor
 */
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;
}

Care va returna rezultate similare cu:

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

)
6 ian. 2017 23:18:30
Comentarii

+1 pentru un răspuns mai complet. Celelalte returnează dimensiuni suplimentare, dar nu și pe cele implicite.

Cazuma Nii Cavalcanti Cazuma Nii Cavalcanti
9 ian. 2017 00:30:36

Și mai bine dacă folosești $default_image_sizes = get_intermediate_image_sizes(); deoarece există dimensiunea medium_large începând cu WP 4.4.

Nate Beaty Nate Beaty
22 sept. 2017 01:23:39

Sugestie bună; am actualizat răspunsul cu recomandarea ta.

rjb rjb
23 sept. 2017 22:24:38

ACF m-a răsfățat cu array-ul său media.

Adam Patterson Adam Patterson
21 mai 2019 05:54:36

Folositor în WP 5.4 folosind PHP 7.3 în Martie 2020 :)

EsaulFarfan EsaulFarfan
1 apr. 2020 10:43:41

Începând cu versiunea 5.3, există wp_get_registered_image_subsizes()

Marc Marc
3 sept. 2020 19:40:56

Acest răspuns funcționează perfect, dar este înlocuit de ultimul comentariu, pentru WordPress 5.3 și versiuni ulterioare: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

nabrown nabrown
8 iun. 2021 19:11:38
Arată celelalte 2 comentarii
0
18

Dacă ai nevoie doar de numele tuturor dimensiunilor de imagini, poți folosi get_intermediate_image_sizes:

<pre>
<?php print_r(get_intermediate_image_sizes()); ?>
</pre>
22 mai 2013 14:32:32
2
18

Începând cu WP 5.3, este suficient să utilizați această funcție:

wp_get_registered_image_subsizes();

Documentație: https://developer.wordpress.org/reference/functions/wp_get_registered_image_subsizes/

27 iul. 2020 18:11:19
Comentarii

Cea mai scurtă și singura răspuns corect de aici, dar de ce este atât de jos în clasamente.

Picard Picard
28 iun. 2022 12:08:59

Singurul răspuns corect. Probabil clasament scăzut pentru că există doar de la WP 5.3, care la momentul întrebării OP nu era disponibil. Cu toate acestea, acesta ar trebui să fie singurul răspuns acceptat, deoarece restul sunt doar "aruncă niște coduri de tip SO gunoi" - votate în sus pentru a-l ridica.

User User
8 nov. 2022 07:02:03
1

Dacă celălalt răspuns nu a funcționat, folosește acest cod, astfel încât să ruleze după ce WordPress este inițializat.

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>';
}
12 dec. 2016 12:41:47
Comentarii

Am testat mai multe metode și aceasta a funcționat în cele din urmă. (WP + WooCommerce + temă personalizată)

Juraj.Lorinc Juraj.Lorinc
19 feb. 2018 13:19:03
0

Începând cu WP 4.7 puteți utiliza wp_get_additional_image_sizes() pentru a obține dimensiunile suplimentare ale imaginilor înregistrate (excluzând dimensiunile implicite adăugate de WP).

Începând cu WP 5.3 puteți utiliza wp_get_registered_image_subsizes() pentru a obține toate dimensiunile imaginilor înregistrate.

25 sept. 2020 15:02:42
0

Utilizați următoarele funcții:

get_intermediate_image_sizes(); // obține toate denumirile dimensiunilor imaginilor.
wp_get_additional_image_sizes(); // obține toate datele suplimentare ale dimensiunilor imaginilor.
wp_get_registered_image_subsizes(); // obține toate datele despre dimensiunile imaginilor.
24 oct. 2022 14:19:30
0

Știu că am întârziat puțin la petrecere, dar iată metoda mea de a afișa toate dimensiunile imaginilor în administrare

/**
 * Metabox cu toate dimensiunile imaginilor în Admin
 */
function sixtyseven_register_imagesizes_dashboard_widget() {
        global $wp_meta_boxes;
    
        wp_add_dashboard_widget(
            'imagesizes_dashboard_widget',
            'Dimensiuni de imagine înregistrate',
            'sixtyseven_imagesizes_dashboard_widget_display'
        );
    
        $dashboard = $wp_meta_boxes['dashboard']['normal']['core'];
    
        $new_widget = array( 'imagesizes_dashboard_widget' => $dashboard['imagesizes_dashboard_widget'] );
        unset( $dashboard['imagesizes_dashboard_widget'] );
    
        $sorted_dashboard = array_merge( $new_widget, $dashboard );
        $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard;
    }
    add_action( 'wp_dashboard_setup', 'sixtyseven_register_imagesizes_dashboard_widget' );
    
    function sixtyseven_imagesizes_dashboard_widget_display() {
        $sizes = wp_get_registered_image_subsizes();
        echo '<ul>';
        foreach($sizes as $name => $values){
            echo '<li>';
            echo '<strong>'.$name.':</strong> ';
            echo 'lățime: '.$values['width'].'px, ';
            echo 'înălțime: '.$values['height'].'px';
            if($values['crop'] === true){
                echo ', decupat';
            }
            echo '</li>';
        }
        echo '</ul>';
    }

Sper că vă ajută.

7 iun. 2024 14:28:19