Cum să preîntâmpini generarea dimensiunii medium_large (768px) pentru încărcările de imagini în WordPress?

9 ian. 2017, 06:29:19
Vizualizări: 17.5K
Voturi: 17

Am reușit să împiedic WordPress să genereze dimensiunile thumbnail, medium și large pentru imaginile încărcate în Biblioteca Media, setând dimensiunile lor la 0 din panoul Settings -> Media.

De asemenea, am eliminat toate apelurile la add_image_size și set_post_thumbnail_size din fișierul functions.php al temei mele.

Totuși, atunci când încarc imagini noi, WordPress continuă să genereze o versiune cu lățimea de 768px (numită 'medium_large') din imaginea originală. Cred că are legătură cu această actualizare.

Există vreo modalitate de a preveni acest lucru?

3
Comentarii

Îți dai seama că WordPress face acest lucru pentru a reduce încărcarea serverului și a-ți accelera site-ul, nu?

Kenneth Odle Kenneth Odle
20 iun. 2017 04:52:27

Ai dreptate. Dimensiunea de imagine medium_large a apărut în WordPress 4.4, împreună cu funcționalitatea de imagini responsive. Are o lățime fixă de 768 px și înălțime proporțională. Acest lucru este hardcodat în WordPress, spre deosebire de celelalte dimensiuni de imagine implicite. Totuși, eu o elimin, dar WordPress și alte teme se pot baza pe existența acestei dimensiuni de imagine pentru a funcționa corect. Ține cont de acest lucru dacă va trebui vreodată să treci temporar la o temă implicită WordPress pentru depanare sau când încerci teme noi. Dacă dimensiunea nu a fost generată la încărcarea imaginii, alte teme nu o vor genera automat când este necesar.

SherylHohman SherylHohman
30 iun. 2020 16:27:04
Toate răspunsurile la întrebare 3
1
21

Pentru a elimina dimensiunea de imagine medium_large poți încerca să o elimini folosind filtrul intermediate_image_sizes:

add_filter( 'intermediate_image_sizes', function( $sizes )
{
    return array_filter( $sizes, function( $val )
    {
        return 'medium_large' !== $val; // Filtrează 'medium_large'
    } );
} );

Dacă încerci să elimini toate dimensiunile intermediare, poți încerca:

add_filter( 'intermediate_image_sizes', '__return_empty_array', 999 );

unde __return_empty_array() este o funcție încorporată în nucleu.

Trebuie menționat că nu este posibil să o elimini cu:

remove_image_size( 'medium_large' );

deoarece aceasta nu este adăugată cu add_image_size() și, prin urmare, nu face parte din tabloul global $_wp_additional_image_sizes sau din funcția wp_get_additional_image_sizes();

9 ian. 2017 11:49:40
Comentarii

da, este de asemenea posibil să modifici opțiunea medium_large_size_w în 0, dar nu putem face asta prin /wp-admin/options.php deoarece pare să aibă probleme cu o valoare 0 acolo (asta este de fapt ce am încercat mai întâi înainte să scriu răspunsul ;-), așa că trebuie să o setăm prin API-ul de setări sau manual în tabela wp_options.

birgire birgire
9 ian. 2017 12:57:28
0
10

Elimină dimensiunea imaginii în același mod în care o face codul WordPress:

add_filter('intermediate_image_sizes', function($sizes) {
    return array_diff($sizes, ['medium_large']);
});

Ține minte că medium_large este de obicei o dimensiune bună de avut în srcset, elimin-o doar dacă înțelegi cum funcționează srcset și dacă ai deja dimensiuni similare acolo.

5 iun. 2018 12:55:06
1

acest lucru va funcționa


function paulund_remove_default_image_sizes( $sizes) {
    unset( $sizes['medium_large']);
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced','paulund_remove_default_image_sizes');

https://developer.wordpress.org/reference/hooks/intermediate_image_sizes_advanced/

20 iun. 2017 04:07:10
Comentarii

Deși acest lucru nu a creat imaginea în sine, a creat totuși intrarea în tabloul de atașamente, deci o intrare falsă cu 769x la sfârșitul URL-ului. Folosirea setării implicite intermediate_image_sizes a eliminat crearea imaginii și afișarea unei intrări pentru aceasta în tablou.

lowtechsun lowtechsun
9 mar. 2018 03:20:53