Co właściwie robią apply_filters (…) w WordPress?

123

Próbuję zrozumieć niektóre funkcje WordPressa, ale nie mogę zrozumieć, co właściwie robi apply_filters (...) .

Czy ktoś jest w stanie wyjaśnić to dla mnie kilkoma przykładami?

Tim
źródło
12
Niesamowite: dev.themeblvd.com/tutorial/filters
Nabil Kadimi
Uwaga, która apply_filters()jest niewiarygodnie mylącą nazwą funkcji, ponieważ stosuje ona zarówno filtry, jak i akcje podłączone do funkcji docelowej
cameronjonesweb
@NabilKadimi, świetna sugestia, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , ale kiedy ta funkcja nie przyjmuje żadnych argumentów (kliknij link, aby zobaczyć, o której funkcji mówię), w jaki sposób zmieniona jest zmienna $ output , jak opisuje w swojej następnej sekcji kodu?
Ramesh Pareek,
@RameshPareek Twój link wydaje się nie działać zgodnie z oczekiwaniami, użyj streszczenia Github.
Nabil Kadimi,
Przepraszam! Przewiń w dół do Przykładu 1: Podstawy na tej stronie.
Ramesh Pareek

Odpowiedzi:

104

apply_filters($tag, $value)przekazuje argument „wartość” do każdej funkcji „przechwyconej” (używając add_filter) do określonego znacznika filtru. Każda funkcja wykonuje pewne przetwarzanie wartości i zwraca zmodyfikowaną wartość, która ma być przekazana do następnej funkcji w sekwencji.

Na przykład, domyślnie (w WordPress 2.9) the_contentfiltr przekazuje wartość przez następującą sekwencję funkcji:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
Richard M.
źródło
Pamiętaj też, aby powtórzyć wszystko, czego nie używasz, jeśli wydaje się, że apply_filters($value)
usuwa
32

spóźniona odpowiedź

Krótkie wyjaśnienie

apply_filters()współdziała z global $wp_filterstablicą. Zasadniczo po prostu sprawdza tablicę, czy bieżący filtr (lub podpięcie) ma dołączoną akcję (/ funkcję zwrotną), a następnie wywołuje ją.

Długie wyjaśnienie

Kiedy dołączasz wywołanie zwrotne / akcję do filtru lub podpięcia, po prostu dodajesz nazwę wywołania zwrotnego do globalnej tablicy filtrów. Kiedy wtedy w kodzie (np. Szablonie, pliku core lub pliku wtyczki) wywołanie do_action()lub apply_filters()nastąpi, WordPress przeszuka tablicę i wywoła wywołanie zwrotne. Jedyną rzeczą bardziej wyjątkową w przypadku filtrów niż w przypadku haków jest to, że zwraca wartość (do dalszej obsługi) zamiast po prostu wywoływać funkcję zwrotną. Podsumowując: hooki mają wstawiać dane, a filtry modyfikować dane.

kajzer
źródło
19

Oto, co zbieram, biorąc pod uwagę najpopularniejszą odpowiedź i dodatkowe zasoby:

  • Znacznik $ wydaje się być synonimem nazwy zaczepu. (Nie jest to dla mnie szczególnie intuicyjne).
  • the_content jest przykładem hooka typu „filter”.
  • Hak the_content składa się z wielu filtrów.
  • Filtry modyfikują dane. Zasadniczo filtrują bazę danych, zmieniając dane, zanim użytkownicy je wyświetlą.
  • Typowym zastosowaniem metody apply_filters () jest na przykład zastosowanie filtrów the_content do $ content. W tym przypadku podwójne zwroty zostaną przekształcone w <p>tagi, buźki zostaną przekształcone w ikony itp.
  • „the_content” to punkt zaczepienia, podczas gdy „the_content ()” jest funkcją.
Marjorie Roswell
źródło
1

W najbardziej podstawowym ujęciu, apply_filters służy do zainicjowania podpięcia filtra ... add_filter przypisuje nową funkcję do już utworzonych podpięć.

Steve
źródło
3
Przepraszamy, to jest niewłaściwe rozwiązanie: apply_filters () wywołuje zaczepy filtrów, które są już zainicjowane, a add_filter () to wywołanie, które tworzy zaczep filtra. Wiem, że naprawdę miałeś to na myśli, ale masz funkcje w niewłaściwy sposób!
Brian C
Apply_filters (tag $, wartość $); pozwala na utworzenie miejsca w kodzie, w którym możesz następnie pozwolić, aby przekazana wartość $ została podpięta i zmodyfikowana za pomocą add_filter ();
Styledev