Ce face de fapt apply_filters(…) în WordPress? (Programare, WordPress, Funcție)

Tim a intrebat.

Încerc să înțeleg unele dintre funcțiile din WordPress, dar nu reușesc să-mi dau seama ce înseamnă apply_filters(…) face de fapt.

Este cineva capabil să mă lămurească cu câteva exemple?

Comentarii

  • Minunat: dev.themeblvd.com/tutorial/filters –  > Por Nabil Kadimi.
  • O notă că apply_filters() este un nume incredibil de înșelător pentru această funcție, deoarece aplică ambele filtre și acțiuni agățate de funcția țintă –  > Por cameronjonesweb.
  • @NabilKadimi, excelentă sugestie, dev.themeblvd.com/tutorial/filters/#highlighter_604585, , dar atunci când această funcție nu acceptă niciun argument(vă rog să dați click pe link pentru a vedea despre ce funcție vorbesc), cum este modificată variabila $output , așa cum descrie el în următoarea secțiune de cod? –  > Por Ramesh Pareek.
  • @RameshPareek Linkul dvs. nu pare să funcționeze conform așteptărilor, vă rugăm să utilizați un gist Github. –  > Por Nabil Kadimi.
  • îmi pare rău! Vă rugăm să derulați în jos la Exemplul 1: Noțiuni de bază de pe pagina respectivă. –  > Por Ramesh Pareek.
4 răspunsuri
Richard M

apply_filters($tag, $value) trece argumentul „valoare” la fiecare dintre funcțiile „agățate” (folosind add_filter) în filtrul „tag” specificat. Fiecare funcție efectuează o anumită procesare a valorii și returnează o valoare modificată pentru a fi transmisă următoarei funcții din secvență.

De exemplu, în mod implicit (în WordPress 2.9), funcția the_content trece valoarea prin următoarea secvență de funcții:

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

Comentarii

  • De asemenea, nu uitați să dați ecou la orice lucru a cărui valoare nu o utilizați, dacă se pare că apply_filters($value) șterge o valoare… –  > Por MrMesees.
kaiser

răspuns târziu

Explicație scurtă

apply_filters() interacționează cu global $wp_filters matrice. Practic, verifică doar array-ul dacă filtrul curent (sau cârligul) are o acțiune (/funcție de retur) atașată și apoi o apelează.

Explicație lungă

Atunci când atașați un callback/acțiune la un filtru sau la un cârlig, trebuie doar să adăugați numele callback-ului la matricea globală de filtre. Când apoi, în cod (de exemplu, pentru un șablon, un fișier de bază sau un plugin), un apel la do_action() sau apply_filters() are loc, atunci WordPress caută în matrice și apelează callback-ul. Singurul lucru mai special în cazul filtrelor decât în cazul cârligelor este faptul că returnează valoarea (pentru a fi tratată în continuare) în loc să lanseze doar callback-ul. Deci, rezumând: Hooks sunt pentru introduceți date, în timp ce filtrele au rolul de a modifică datele.

Marjorie Roswell

Iată ce înțeleg, după ce am luat în considerare cel mai popular răspuns și resursele suplimentare:

  • $tag pare a fi un sinonim pentru numele cârligului. (Asta nu este deosebit de intuitiv pentru mine.)
  • the_content este un exemplu de cârlig, de tip „filter”.
  • Cârligul the_content este format din mai multe filtre.
  • Filtrele modifică datele. Practic, ele filtrează baza de date, modificând datele înainte ca utilizatorii să le vizualizeze.
  • O utilizare obișnuită a aplicației apply_filters(), de exemplu, este de a aplica filtrele the_content la $content. În acest caz, returnările duble vor fi convertite în <p> etichete, fețele zâmbitoare vor fi convertite în pictograme etc.
  • „the_content” este un cârlig, în timp ce „the_content()” este o funcție.

Steve

În termenii cei mai de bază, apply_filters este utilizat pentru a inițializa un cârlig de filtrare… add_filter atribuie o nouă funcție cârligelor care au fost deja create.

Comentarii

  • Îmi pare rău, dar este invers: apply_filters() apelează cârligele de filtrare care sunt deja inițializate, iar add_filter() este apelul care creează un cârlig de filtrare. Știu că ai vrut să spui asta, dar ai pus funcțiile în mod greșit! –  > Por Brian C.
  • apply_filters($tag,$value); vă permite să creați un loc în cod unde puteți permite apoi ca valoarea $value pe care o treceți să fie agățată și modificată prin utilizarea add_filter(); –  > Por Styledev.