Puoi usare add_filter() all'interno di un'altra funzione?
Sono nuovo su WordPress e attualmente sto sviluppando il mio primo plugin e ho delle difficoltà.
Come posso inserire l'azione add_filter all'interno della mia funzione di submit? Voglio che l'azione add_filter
venga elaborata dopo che l'utente clicca sul pulsante di invio.
Ho provato così ma non ha funzionato.
if(isset($_POST['btn_submit'])) {
function addContent($content = '') {
$content .= "Il mio contenuto";
return $content;
}
add_filter('the_content', 'addContent');
}
Qualsiasi aiuto sarebbe molto apprezzato. Grazie!

Penso che quello che stai EFFETTIVAMENTE cercando di fare sia apply_filters()
. add_filter()
registra un nuovo filtro, mentre apply_filters()
applica i filtri che sono stati registrati.
Se non è questo quello che vuoi fare, allora devi essere consapevole che add_filter()
deve essere eseguito ogni volta che vuoi applicare il filtro. Questo permette ai plugin di essere rimossi senza dover deregistrare tutti i loro filtri e generalmente mantiene un'installazione WordPress piuttosto pulita... aiuta anche con la sicurezza. Una domanda migliore potrebbe includere un ambito più ampio, in cui dichiari quello che stai cercando di fare, piuttosto che farci cercare di risolvere i problemi della tua implementazione.

Voglio aggiungere contenuto in fondo a ogni post del mio sito, e add_filter lo ha fatto, ma l'azione add_filter() viene processata solo quando il plugin è attivato, ma cosa succede se voglio che venga processata dopo che il pulsante di invio è stato cliccato? apply_filters() funzionerà? Ho già letto la documentazione su apply_filters() e non ho trovato la soluzione alla mia domanda.

Voglio solo dire che ho già risolto questo problema. Ho separato la funzione addContent dalla funzione submit e ho inserito una riga di codice all'interno della funzione submit che chiama la funzione per aggiungere i contenuti.
qualcosa come questo:
`function addContent($content = '') { $content .= "Il mio contenuto"; return $content; }
add_filter('the_content', 'addContent');
if(isset($_POST['btn_submit'])) { $content .= addContent(); }`
questo funziona per me.. grazie mille.

Se vuoi che venga mostrato solo una volta che un pulsante è stato cliccato e poi scompaia al cambio di pagina successivo (una volta che i dati del post sono spariti), allora quello che stai facendo è un metodo appropriato. Se vuoi cambiare il comportamento in modo permanente quando il pulsante viene cliccato, dovrai salvare l'opzione nel database.

@Shaon, Grazie per la tua risposta. Non sono riuscito a farlo funzionare efficacemente, ma ecco una funzione molto funzionante che ho trovato: http://core.trac.wordpress.org/ticket/15311#comment:13
