Jak wyłączyć generowanie domyślnych rozmiarów obrazów dla niektórych niestandardowych typów postów?


12

Użyłem niestandardowego typu postu, w którym „miniatura”, „średni” i „duży” rozmiar nie są wymagane. Muszę wyłączyć te rozmiary i utworzyć funkcję lub wtyczkę, w której mogę ustawić, który rozmiar obrazu jest wymagany dla każdego niestandardowego typu postu.

Pierwszym krokiem jest podpięcie się do funkcji get_intermediate_image_sizes z wp-obejmuje / media.php. Dodałem ten kod do functions.php, ale nie działa :(

add_filter('get_intermediate_image_sizes', 'get_intermediate_image_sizes_fixed');
function get_intermediate_image_sizes_fixed() {
    global $_wp_additional_image_sizes;
    //$image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
    $image_sizes = array();
    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
        $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
return apply_filters( 'intermediate_image_sizes', $image_sizes );
}   

UPD: Edycja tej linii w media.php działa. Typy domyślne po nie generowaniu zmian.

$image_sizes = array('thumbnail', 'medium', 'large');

Ale jak sprawić, by praca była moim hakiem?


1
też chciałbym na to odpowiedzieć
— urok93

2
Nie tak używasz tego filtra. Aby wyczyścić domyślne rozmiary, wystarczy dodać go z bardzo niskim priorytetem i zwrócić pustą tablicę. Jednak to nie rozwiąże problemu, ponieważ wpłynie to na wszystkie typy postów. Nie sądzę, że istnieje sposób na robienie tego, co chcesz w bieżącej wersji WP. Spróbuj poprosić programistów WP o dodanie $attachment_idargumentu do filtra wewnątrz tej funkcji. W ten sposób możesz sprawdzić typ słupka wewnątrz haka
— onetrickpony

Mój krok to tylko eksperyment, ale nie pełne rozwiązanie. Jak mogę prawidłowo używać filtra? PS Dziękuję za link ..
— Bohdan Hdal

Jakieś zmiany w WP, które umożliwiają to teraz?
— Drivingralle

Bez zmian. Wciąż ten sam problem.
— Bohdan Hdal

Odpowiedzi:


7

Myślę, że jedynym rozwiązaniem, jakie masz w tej chwili, jest wyłączenie wszystkich pośrednich rozmiarów obrazów:

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

Następnie ręcznie wygeneruj je, w zależności od typu postu, przechwytując plik „wp_generate_attachment_metadata”, w którym masz dostęp do identyfikatora załącznika (a zatem do jego postu nadrzędnego):

function do_your_stuff( $data, $attachment_id ) {
  // generate intermediate images

  return $data;
}

add_filter( 'wp_generate_attachment_metadata', 'do_your_stuff', 10, 2 );

Jakie parametry 10 i 2 przekazujesz do ostatniego filtra add_filter?
— Łukasz

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.