Cosa fa apply_filters (…) in realtà in WordPress?


123

Sto cercando di capire alcune delle funzioni in WordPress, ma non riesco a capire cosa fa in realtà apply_filters (...) .

Qualcuno è in grado di chiarirmi questo con alcuni esempi?



Una nota che apply_filters()è un nome incredibilmente fuorviante per la funzione in quanto applica sia i filtri che le azioni collegate alla funzione di destinazione
cameronjonesweb

@NabilKadimi, ottimo suggerimento, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , ma quando questa funzione non accetta alcun argomento (fare clic sul collegamento per vedere di quale funzione sto parlando), come viene modificata la variabile $ output , come descrive nella sua prossima sezione di codice?
Ramesh Pareek

@RameshPareek Il tuo link non sembra funzionare come previsto, usa un gist di Github.
Nabil Kadimi

spiacente! Scorri verso il basso fino all'Esempio 1: Nozioni di base su quella pagina.
Ramesh Pareek

Risposte:


104

apply_filters($tag, $value)passa l'argomento 'value' a ciascuna delle funzioni 'hooked' (using add_filter) nel filtro 'tag' specificato. Ogni funzione esegue alcune elaborazioni sul valore e restituisce un valore modificato da passare alla funzione successiva nella sequenza.

Ad esempio, per impostazione predefinita (in WordPress 2.9) il the_contentfiltro passa il valore attraverso la seguente sequenza di funzioni:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode

Ricorda anche di fare eco a tutto ciò di cui non stai usando il valore se sembra che apply_filters($value)stia cancellando un valore ...
MrMesees

32

risposta in ritardo

Breve spiegazione

apply_filters() interagisce con il global $wp_filters array. Fondamentalmente controlla semplicemente l'array se il filtro corrente (o hook) ha un'azione (/ funzione di callback) allegata e quindi la chiama.

Lunga spiegazione

Quando si collega una richiamata / azione a un filtro o hook, è sufficiente aggiungere il nome della richiamata all'array dei filtri globali. Quando poi, nel codice (ad esempio un file template, core o plugin) si verifica una chiamata a do_action()o apply_filters(), WordPress ha cercato nell'array e chiama la callback. L'unica cosa più speciale con i filtri che con gli hook è che restituisce il valore (per ulteriore gestione) invece di attivare semplicemente il callback. Quindi riassunto: gli hook servono per inserire i dati, mentre i filtri devono modificare i dati.


19

Ecco cosa sto raccogliendo, considerando la risposta più popolare e le risorse aggiuntive:

  • $ tag sembra essere un sinonimo del nome dell'hook. (Non è particolarmente intuitivo per me.)
  • the_content è un esempio di hook, del tipo "filter".
  • l'hook_content è costituito da più filtri.
  • I filtri modificano i dati. Fondamentalmente filtrano il database, modificando i dati prima che gli utenti lo visualizzino.
  • Un uso comune di apply_filters (), ad esempio, è applicare i filtri_content a $ content. In questo caso, i doppi ritorni verranno convertiti in <p>tag, le faccine verranno convertite in icone, ecc.
  • "the_content" è un hook, mentre "the_content ()" è una funzione.

1

Nei termini più elementari, apply_filters è usato per inizializzare un hook di filtro ... add_filter assegna una nuova funzione agli hook che sono già stati creati.


3
Spiacente, questo è il modo sbagliato: apply_filters () chiama gli hook di filtro che sono già inizializzati e add_filter () è la chiamata che crea un hook di filtro. So che in realtà intendevi questo, ma hai le funzioni nel modo sbagliato!
Brian C

apply_filters ($ tag, $ value); ti permette di creare una posizione nel tuo codice dove puoi poi permettere che il valore $ che passi venga agganciato e modificato usando add_filter ();
Styledev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.