Quali sono i casi d'uso di esc_html in WordPress?

3 nov 2016, 00:00:41
Visualizzazioni: 18.7K
Voti: 6

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

5
Commenti

Penso che lo stiano usando per internazionalizzare il tema

user3635808 user3635808
3 nov 2016 00:07:05

@user3635808 Per la traduzione? Ha più senso. Stavo solo guardando la cosa dal punto di vista della sicurezza e non avevo considerato altro

John_911 John_911
3 nov 2016 00:12:00

Sì, per la traduzione.

user3635808 user3635808
3 nov 2016 00:12:30

@user3635808 Ahhh, non avevo nemmeno notato che stavo cercando esc_html invece di esc_html__ - nota i doppi underscore alla fine.

John_911 John_911
3 nov 2016 00:15:32

@user3635808 Potrebbe essere una buona risposta se aggiungi qualche ricerca ed esempi :)

Howdy_McGee Howdy_McGee
3 nov 2016 00:18:28
Tutte le risposte alla domanda 4
2
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.

https://codex.wordpress.org/Function_Reference/esc_html_2

3 nov 2016 01:41:10
Commenti

Questa dovrebbe essere la risposta accettata.

Mac Mac
22 nov 2017 20:44:30

@Mac, Sì questa dovrebbe essere accettata. esc_html__ vieta l'uso di HTML nelle stringhe tradotte.

Andrei Surdu Andrei Surdu
22 nov 2017 20:50:15
1

esc_html() svolge due funzioni:

  1. Verifica la presenza di caratteri UTF8 non validi in una stringa.
  2. 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.

3 nov 2016 00:46:15
Commenti

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.

amieiro amieiro
10 ott 2021 07:50:42
0

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__()).

22 nov 2017 20:43:54
1

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.

6 giu 2018 06:57:27
Commenti

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.

Mark Kaplun Mark Kaplun
6 giu 2018 07:11:51