Quando usare esc_html e quando usare sanitize_text_field?
Sembra che svolgano quasi lo stesso tipo di lavoro. Quindi...
Quando dovrei usare esc_html()
invece di sanitize_text_field()
?

esc_html()
è più o meno senza perdita di dati — semplicemente converte il markup HTML in testo codificato visibile, in modo che non venga interpretato come markup dal browser.
Semanticamente è una funzione di escape, quindi è pensata per rendere sicuro l'output sulla pagina.
sanitize_text_field()
invece rimuove effettivamente tutto il markup HTML, oltre agli spazi bianchi extra. Non lascia altro che testo semplice.
Semanticamente è una funzione di sanitizzazione, quindi è pensata per rendere sicuro l'input da salvare.

non è meglio usare esc_html sia per l'output che per il salvataggio? Tanto non visualizzerò alcun markup.. quindi quando dovrei usare sanitize_text_field()?

@yeahman "meglio" in che senso? Fanno cose chiaramente diverse. Scartare il markup è solitamente usato per cose dove non ci si aspetta markup, ad esempio un form che prende un nome.

Intendo che memorizza ciò che l'utente vede e ha inserito... come hai detto è senza perdita (es. inserisce "il tag <head> è dove dovresti includere i tuoi file css", si aspetta di vedere il <head> nel suo post).
Per un campo nome, controllerei l'input tramite validazione; non sarebbe più appropriato?

Mi interessa conoscere le differenze tra sanitize_text_field()
e strip_tags

Se non sbaglio, strip_tags viene utilizzato all'interno di sanitize_text_field()

Se inserisci contenuto in un array codificato JSON e i valori dell'array contengono "
(cosa MOLTO probabile se il tuo contenuto è ad esempio dati di un post) - mentre sanitize_text_field()
sarebbe la cosa giusta da fare poiché stai SALVANDO i dati, non funzionerà. Dovrai usare esc_html
, che codifica i "
e quindi, nel momento in cui decodifichi il tuo JSON, non interromperà il valore restituito.
