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.