Quali sono i casi d'uso di esc_html in WordPress?
Sto esaminando il tema starter _s (underscores) e vedo che usano esc_html per quasi tutto. Ecco un esempio da functions.php:
register_nav_menus( array(
'primary' => esc_html__( 'Primary', '_s' ), // Registra il menu principale con traduzione e escape
) );
register_sidebar( array(
'name' => esc_html__( 'Sidebar', '_s' ), // Nome della sidebar con escape
'id' => 'sidebar-1',
'description' => esc_html__( 'Add widgets here.', '_s' ), // Descrizione con escape
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
La mia attuale comprensione di esc_html è di usarlo quando stampiamo dati dal database o input utente.
Perché fare l'escape dei nomi del menu e della sidebar?
Sono disponibili solo a chi ha accesso ai file php e non sembrano essere salvati nel database. Ho controllato il db e non ho trovato nulla relativo ai nomi, correggimi se sbaglio.
Il tema underscores sta solo essendo eccessivamente cauto su tutto?
Grazie

esc_html__( string $text, string $domain = 'default' )
Recupera la traduzione di $text e la codifica per un utilizzo sicuro nell'output HTML.
Quindi esc_html__()
viene utilizzato per internazionalizzare e anche per scopi di sicurezza.

esc_html() svolge due funzioni:
- Verifica la presenza di caratteri UTF8 non validi in una stringa.
- Converte una serie di caratteri speciali nelle rispettive entità HTML, in particolare gestisce: &, <, >, “ e ‘.
Utilizzarla al posto di __()
, _e
e altre funzioni di internazionalizzazione (i18n) protegge il tuo sito da possibili errori che possono verificarsi con traduttori che potrebbero inconsapevolmente utilizzare testo contenente (1) caratteri UTF8 non validi o (2) codice HTML indesiderato. Fidati, molti traduttori saranno tentati di usare qualche bel tag HTML come <i>
, <b>
ecc., e peggio ancora, potrebbero non chiuderli correttamente.

Se dai un'occhiata al esc_html__()
codice sorgente, puoi vedere che questa funzione chiama semplicemente la funzione esc_html()
con la traduzione della stringa, quindi ciò che questo post spiega sono i vantaggi dell'escape e perché gli sviluppatori hanno applicato l'escape a queste stringhe.

Le acque sono torbide qui. La domanda dell'OP riguarda esc_html(), ma il suo codice utilizza chiaramente esc_html__(). Queste non sono la stessa cosa. La risposta accettata è sbagliata: si riferisce a esc_html(), che gestisce l'escape sicuro di blocchi HTML. La risposta di Kanon Chowdhury dovrebbe essere quella accettata, perché il codice dell'OP tratta degli aspetti I18n del tema starter Underscores di WordPress (che utilizza la funzione esc_html__()).

esc_html() e esc_html__() NON sono la stessa funzione. La differenza principale è che esc_html() accetta solo una stringa e restituisce una stringa HTML escapata. D'altra parte, esc_html__() accetta 2 stringhe come parametri e restituisce una stringa tradotta e escapata.
La risposta accettata è infatti errata.

Se pensi che una risposta sia sbagliata (non solo non utile), sei il benvenuto a votarla negativamente. Lo stato di risposta accettata significa solo che l'autore della domanda la considera una risposta sufficientemente buona per la sua domanda, ma non indica la qualità, né tanto meno la correttezza generale; questi aspetti sono indicati dal numero di voti positivi.
