Mam problem z owinięciem głowy wokół $valuei $var. Czytam kodeks i wydaje się, że $valuemożna go modyfikować, $varnie, ale nie znalazłem żadnych przykładów tego na wolności. Wydaje się być wykorzystywany jako sposób na przekazanie zmiennej. W takim razie jaka jest różnica między tym a tym $var?
apply_filters(
$filter_name,// used for add_filter( $filter_name, 'callback' );
$value_to_change,// the only variable whose value you can change
$context_1,// context
$context_2 // more context);
Kiedy więc ta funkcja jest wywoływana jako:
// wp-login.php line 94
apply_filters('login_body_class', $classes, $action );
Jeśli poprawnie rozumiem. Nie dodam zmiennej, aby zebrać zwróconą wartość z filtrów_zastosowania, ponieważ jest ona automatycznie stosowana do zmiany wartości do $?
r00tAcc3ss
@ r00tAcc3ss Nic nie dzieje się automatycznie. Musisz zmienić wartość w wywołaniu zwrotnym. Możesz również zwrócić go bez zmian, jeśli chcesz - w zależności od kontekstu.
fuxia
O tak. Miałem na myśli, że nie muszę akceptować zwracanej wartości w innej zmiennej i przypisywać jej wartości $. Dokonuje się tego, jeśli zmienię wartość $ w funkcji przechwyconej i zwrócę „automatycznie”.
r00tAcc3ss
11
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_filtersfunkcji 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_titlehaka 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 $titleto dane, które należy zmienić (tj. Tytuł postu), a drugi parametr $idto 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_filterfunkcję, zobaczymy, że jest ona zdefiniowana w następujący sposób:
Podaliśmy tylko pierwszy i drugi (wymagany) parametr, podczas gdy trzeci i czwarty parametr jest ustawiony na odpowiednią wartość domyślną (tj. 10I 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 ).
Co to są filtry?
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: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:
Jeśli spojrzymy na
add_filter
funkcję, zobaczymy, że jest ona zdefiniowana w następujący sposób:Podaliśmy tylko pierwszy i drugi (wymagany) parametr, podczas gdy trzeci i czwarty parametr jest ustawiony na odpowiednią wartość domyślną (tj.
10
I1
).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:
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 :
apply_filters
funkcjonowaćadd_filter
funkcjonowaćźródło