Cum să obții o listă cu toate dimensiunile posibile ale miniaturilor setate într-o temă
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.

Am găsit aici. Răspunsul este:
global $_wp_additional_image_sizes;
print '<pre>';
print_r( $_wp_additional_image_sizes );
print '</pre>';

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.

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

Începând cu 2023, acesta este răspunsul corect: https://wordpress.stackexchange.com/questions/33532/how-to-get-a-list-of-all-the-possible-thumbnail-sizes-set-within-a-theme#answer-410707

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

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

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

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/

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>

Î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/

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

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.

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

Î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.

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.

Ș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ă.
