Pracuję nad motywem, który ma poprawnie zdefiniowaną liczbę rozmiarów obrazów, używając:
add_image_size( 'name', 500, 200, true );
Chciałbym zastąpić te zdefiniowane rozmiary z motywu potomnego:
add_image_size( 'new-name', 400, 300, true );
Wiem, że mogę dodawać nowe rozmiary, ale jeśli dodam tę samą nazwę, tj .:
add_image_size( 'name', 400, 300, true );
Następnie używane jest wywołanie funkcji rodzica - dziecko jest ignorowane - dodanie dodatkowych reguł dodaje dodatkowe obrazy, które nigdy nie będą używane - nie jest tak źle, ale nie jest wydajne.
Czy istnieje funkcja wyrejestrowania dodanego rozmiaru obrazu?
Twoje zdrowie!
Promień
add_image_size()
połączenia tylko siedzą nagofunctions.php
, czy są odpowiednio opakowane w wywołanie zwrotne i podłączoneafter_setup_theme
? Wiedza, która jest kluczowa dla odpowiedzi na twoje pytanie.Odpowiedzi:
Ta
add_image_size( $name, $width, $height, $crop )
funkcja jest wystarczająco płynna, aby obsługiwać wiele połączeń przy użyciu tego samego$name
. Po prostu nadpisuje istniejącą wartość :Oznacza to, że wszystko, co musisz zrobić, aby zastąpić definicję niestandardowego rozmiaru obrazu Motywu nadrzędnego, to upewnić się, że Twoje wywołanie jest
add_image_size()
uruchamiane po wywołaniu Motywu nadrzędnego .Zakładając, że motyw nadrzędny to lubi:
Następnie
add_image_size()
wywołanie motywu nadrzędnego jest uruchamiane zafter_setup_theme
hakiem, z domyślnym priorytetem (tj10
.).(Uwaga: jeśli połączenia nie są zawinięte w oddzwanianie, wówczas
plugins_loaded
wysyłane są w pierwszej kolejności jako haczyk10
).Oto kluczowa część: plik motywu potomnego
functions.php
jest analizowany przed motywem nadrzędnym , więc jeśli użyjesz tych samych haczyków do uruchamianiaadd_image_size()
połączeń, zostaną one zastąpioneadd_image_size()
wywołaniami motywu rodzica .Rozwiązaniem jest użycie późniejszego haka lub niższego priorytetu , aby zapewnić, że
add_image_size()
wywołanie Motywu podrzędnego będzie uruchamiane za Motywem nadrzędnym.To powinno załatwić sprawę, niezależnie od tego, w jaki sposób motyw nadrzędny uruchamia swoje wywołania:
Zauważ, że używamy tego samego
after_setup_theme
haka, ale używamy niższego priorytetu (tj.11
Zamiast10
. Oddzwanianie jest uruchamiane w kolejności od wyższego priorytetu (niższy numer) do niższego priorytetu (wyższy numer), zaczynając od priorytetu0
. Więc oddzwanianie podłączone do priorytetu11
będzie uruchamiane po oddzwonienie przypisane do priorytetu10
.Należy również zauważyć, że
after_setup_theme
sam hak odpala po tymplugins_loaded
hakiem, więc ta zwrotna będzie nadal zastąpić Temat nadrzędny, nawet jeśli rodzic Temat jest_doing_it_wrong()
przez nie owijając takich połączeń w odpowiednim oddzwonienia, haczykowate do odpowiedniego haka.źródło
Jeśli ktoś chce po prostu usunąć dodatkowe rozmiary obrazu, zamiast zmieniać wymiary, użyj remove_image_size (string $ name) , np.
źródło
W swoim motywie chile musisz użyć
add_action( 'after_setup_theme','new-name');
źródło
new-name
jest to niepoprawna nazwa wywołania zwrotnego.