Ce face apply_filters
apply_filters() ia o valoare ($value), o dă primei funcții legate cu add_filter(), rezultatul îl dă următoarei și tot așa, apoi întoarce valoarea finală. Dacă nimic nu e legat de filtru, primești înapoi valoarea neschimbată.
În tema sau pluginul tău, pune apply_filters() în jurul valorilor pe care alții ar trebui să le poată ajusta: texte, prețuri, liste de opțiuni. Argumentele de după $value sunt context pentru funcțiile legate (de exemplu ID-ul produsului) și nu sunt modificate.
Parametrul variadic ...$args apare oficial în semnătură din WordPress 6.0.0; argumentele suplimentare funcționau și înainte.
Parametri
| Parametru | Descriere |
|---|---|
$hook_name |
Numele filtrului. Pentru filtrele proprii folosește un prefix unic (dex_). |
$value |
Valoarea de filtrat (text, număr, tablou, obiect). |
...$args |
Opțional. Valori suplimentare trimise funcțiilor legate, doar ca informație. |
Ce returnează
Valoarea după ce a trecut prin toate funcțiile legate (sau $value, dacă nu există niciuna).
Exemple
Exemplul 1: Un mesaj pe care tema copil îl poate schimba
Pluginul afișează un mesaj trecut printr-un filtru propriu, cu utilizatorul curent ca argument suplimentar. Tema copil îl personalizează.
// În plugin:
$mesaj = apply_filters( 'dex_mesaj_bun_venit', 'Bine ai venit!', wp_get_current_user() );
echo '<p>' . esc_html( $mesaj ) . '</p>';
// În tema copil:
add_filter( 'dex_mesaj_bun_venit', 'dex_mesaj_personal', 10, 2 );
function dex_mesaj_personal( $mesaj, $user ) {
if ( $user->exists() ) {
return 'Bună, ' . $user->display_name . '! Bine ai venit la Cafenea Iași.';
}
return $mesaj;
}
Ce afișează pagina
<p>Bună, Ana! Bine ai venit la Cafenea Iași.</p>
Exemplul 2: Preț ajustabil, cu ID-ul produsului drept context
Funcția legată primește prețul și ID-ul și aplică o reducere de 10% doar produsului 15.
add_filter( 'dex_pret_produs', 'dex_reducere_cafea', 10, 2 );
function dex_reducere_cafea( $pret, $produs_id ) {
return 15 === $produs_id ? $pret * 0.9 : $pret;
}
$pret = apply_filters( 'dex_pret_produs', 12.50, 15 );
echo esc_html( number_format( $pret, 2, ',', '.' ) . ' lei' );
Ce afișează pagina
11,25 lei
Greșeli frecvente
- Nu păstrezi rezultatul:
apply_filters( 'dex_x', $valoare );fără$valoare = ...aruncă valoarea filtrată. - Funcții legate fără
return: următoarea funcție și codul tău primescnull. - Confuzia cu
do_action(): filtrele sunt pentru valori care se întorc, acțiunile pentru lucruri care se întâmplă (afișare, salvare, e-mail).
Comenzi înrudite
add_filter: Leagă o funcție de un filtru: WordPress îi dă o valoare, iar funcția întoarce valoarea modificată.do_action: Rulează toate funcțiile legate de o acțiune; apelat cu un nume nou, creează un hook propriu în tema sau pluginul tău.the_content: Filtrul prin care trece conținutul unui articol după ce este citit din baza de date și înainte de a fi afișat.