Co to są filtry?
Filtry to funkcje, przez które WordPress przesyła dane w określonych momentach wykonania, tuż przed podjęciem pewnych działań z danymi (takich jak dodanie do bazy danych lub wysłanie do ekranu przeglądarki). Filtry znajdują się między bazą danych a przeglądarką (gdy WordPress generuje strony) oraz między przeglądarką a bazą danych (gdy WordPress dodaje nowe posty i komentarze do bazy danych); większość danych wejściowych i wyjściowych w WordPressie przechodzi przez co najmniej jeden filtr. WordPress domyślnie filtruje, a Twoja wtyczka może dodawać własne filtrowanie.
Podłączenie do filtra
Aby umożliwić użytkownikom zmianę niektórych określonych danych (wartości, wyniku funkcji itp.), Za pomocą apply_filters
funkcji dostarczane są haki filtrów .
Te zaczepy filtrów zawierają nazwę (lub znacznik ) filtra i przynajmniej nazwę funkcji, która ma zostać użyta do filtrowania (tj. Zmiany w jakiś sposób) danych.
Aby zmienić tytuł posta, możesz użyć the_title
haka filtru, który jest zdefiniowany w następujący sposób:
apply_filters( 'the_title', $title, $id );
Oznacza to, że filtr ma znacznik / nazwę the_title
, pierwszy parametr $title
to dane, które należy zmienić (tj. Tytuł postu), a drugi parametr $id
to dodatkowe informacje (w tym przypadku identyfikator postu).
Aby na przykład wyświetlić tytuł każdego posta w WIELKIM LITERZE, możesz użyć następującego wiersza:
add_filter('the_title', 'strtoupper');
Jeśli spojrzymy na add_filter
funkcję, zobaczymy, że jest ona zdefiniowana w następujący sposób:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
Podaliśmy tylko pierwszy i drugi (wymagany) parametr, podczas gdy trzeci i czwarty parametr jest ustawiony na odpowiednią wartość domyślną (tj. 10
I 1
).
Bardziej złożony filtr
Jeśli chcesz filtrować tylko określony post , możesz użyć dodatkowych informacji (w przypadku tego filtra: identyfikator). Aby to zrobić, musisz określić liczbę parametrów (w tym przypadku jest to 2), a aby to zrobić ponownie, musisz określić parametr priorytetu (który występuje przed liczbą argumentów).
Załóżmy, że chcemy wpływać tylko na tytuł posta o identyfikatorze 42, wtedy wygląda to tak:
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
W takim przypadku musimy określić wszystkie cztery dostępne parametry.
Jakie mam parametry?
Aby zidentyfikować (liczbę) dostępnych parametrów określonego filtra, musisz sprawdzić, gdzie jest on zdefiniowany (w tym przypadku: tutaj ).
Referencje :