Poți folosi add_filter() în interiorul altei funcții?

7 feb. 2012, 15:38:10
Vizualizări: 13.2K
Voturi: 2

Sunt nou în WordPress și în prezent dezvolt primul meu plugin și întâmpin dificultăți.

Cum pot insera acțiunea add_filter în interiorul funcției mele de submit? Vreau ca acțiunea add_filter să se proceseze după ce utilizatorul apasă butonul de trimitere.

Am încercat asta dar nu a funcționat.

if(isset($_POST['btn_submit'])) {

    function addContent($content = '') {            
        $content .= "Conținutul meu";

        return $content;
    }

    add_filter('the_content', 'addContent');
}

Orice ajutor ar fi foarte apreciat. Mulțumesc!

1
Comentarii

Dacă ai rezolvat această problemă (așa cum este menționat în comentariile de mai jos), te rugăm să postezi soluția ta ca răspuns pentru ceilalți.

EAMann EAMann
7 feb. 2012 17:26:35
Toate răspunsurile la întrebare 3
3

Cred că ceea ce căutați DE FAPT să faceți este să folosiți apply_filters(). add_filter() înregistrează un nou filtru, în timp ce apply_filters() aplică filtrele care au fost înregistrate.

Dacă nu este ceea ce încercați să faceți, atunci trebuie să fiți conștienți că add_filter() trebuie rulat de fiecare dată când doriți să aplicați filtrul. Acest lucru permite eliminarea plugin-urilor fără a fi nevoie să dezînregistrați toate filtrele acestora și, în general, menține o instalare WordPress destul de curată... De asemenea, ajută la securitate. O întrebare mai bună ar putea acoperi un domeniu mai larg, în care să precizați ce încercați să faceți, în loc să ne rugați să depanăm implementarea dumneavoastră.

7 feb. 2012 15:46:27
Comentarii

Vreau să adaug conținut în partea de jos a fiecărui post de pe site-ul meu, iar add_filter a funcționat, dar acțiunea add_filter() se procesează doar atunci când plugin-ul este activat. Dar dacă vreau ca acesta să se proceseze după ce butonul de trimitere este apăsat? Va funcționa apply_filters()? Am citit deja documentația despre apply_filters() și nu am găsit soluția la întrebarea mea.

ronniel ronniel
7 feb. 2012 16:15:27

Vreau doar să spun că am rezolvat deja această problemă. Am separat funcția addContent de funcția submit și am adăugat o linie de cod în interiorul funcției submit care apelează funcția de adăugare a conținutului.

ceva de genul:

`function addContent($content = '') { $content .= "Conținutul meu"; return $content; }

add_filter('the_content', 'addContent');

if(isset($_POST['btn_submit'])) { $content .= addContent(); }`

asta funcționează pentru mine.. mulțumesc mult.

ronniel ronniel
7 feb. 2012 16:31:14

Dacă doriți ca acesta să apară doar după ce un buton a fost apăsat și apoi să dispară la următoarea schimbare de pagină (odată ce datele postate dispar), atunci ceea ce faceți este o metodă adecvată. Dacă doriți să schimbați comportamentul permanent atunci când butonul este apăsat, va trebui să stocați opțiunea în baza de date.

mor7ifer mor7ifer
7 feb. 2012 16:31:22
0

De asemenea, poți scrie în felul următor:

    function addContent($content = '') {    
     $content .= "Conținutul meu";    
     return $content; 
    }

   if(isset($_POST['btn_submit'])) {
    add_filter('the_content', 'addContent'); }
7 feb. 2012 17:38:55
0

@Shaon, Mulțumesc pentru răspunsul tău. Nu am reușit să fac asta să funcționeze eficient, dar iată o funcție foarte practică pe care am găsit-o: http://core.trac.wordpress.org/ticket/15311#comment:13

28 mar. 2012 03:23:13