Cineva poate explica cazurile de utilizare pentru esc_html?
Mă uit prin tema _s (underscores) și observ că folosesc esc_html pentru aproape orice. Iată un exemplu din functions.php:
register_nav_menus( array(
'primary' => esc_html__( 'Primary', '_s' ),
) );
register_sidebar( array(
'name' => esc_html__( 'Sidebar', '_s' ),
'id' => 'sidebar-1',
'description' => esc_html__( 'Add widgets here.', '_s' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
Înțelegerea mea curentă despre esc_html este că ar trebui folosită când afișăm date din baza de date sau input de la utilizatori.
De ce să escapăm numele meniului și sidebar-ului?
Acestea sunt accesibile doar persoanelor care au acces la fișierele php și nu par să fie introduse în baza de date. Am verificat baza de date și nu am găsit nimic legat de aceste nume, corectați-mă dacă greșesc.
Oare tema underscores este doar exces de precauție?
Mulțumesc

esc_html__( string $text, string $domain = 'default' )
Returnează traducerea textului $text și îl escapează pentru utilizare sigură în output HTML.
Funcția esc_html__()
este folosită atât pentru internaționalizare cât și în scopuri de securitate.

esc_html() realizează două lucruri:
- Verifică existența caracterelor UTF8 invalide într-un șir de text.
- Transformă o serie de caractere speciale în entitățile HTML corespunzătoare, în special se ocupă de: &, <, >, “, și ‘.
Folosirea acesteia în locul funcțiilor de internaționalizare precum __()
, _e()
și altele protejează site-ul tău de potențiale erori care pot apărea din cauza traducătorilor care ar putea folosi text ce conține (1) caractere UTF8 invalide sau (2) cod HTML nedorit. Crede-mă, mulți traducători vor fi tentați să folosească tag-uri HTML 'frumoase' precum <i>
, <b>
etc., ba chiar mai rău, le vor închide greșit.

Dacă te uiți la esc_html__()
codul sursă, poți observa că această funcție doar apelează funcția esc_html()
cu traducerea șirului, deci ceea ce explică acest articol sunt beneficiile de escapare și de ce dezvoltatorii au escapat aceste șiruri.

Apele sunt tulburi aici. Întrebarea OP se referă la esc_html(), dar codul său folosește în mod clar esc_html__(). Acestea nu sunt același lucru. Răspunsul acceptat este greșit: se referă la esc_html(), care se ocupă cu escaparea sigură a blocurilor HTML. Răspunsul lui Kanon Chowdhury ar trebui să fie cel acceptat, deoarece codul OP se ocupă de aspectele I18n ale temei de pornire WordPress Underscores (care utilizează funcția esc_html__()).

esc_html() și esc_html__() NU sunt aceleași funcții. Diferența principală este că, esc_html() primește doar un șir de caractere și returnează un șir HTML escapătat. Pe de altă parte, esc_html__() primește 2 șiruri de caractere ca parametri și returnează un șir tradus și escapătat.
Răspunsul acceptat este, într-adevăr, incorect.

Dacă crezi că un răspuns este greșit (nu doar nefolositor), ești binevenit să îl votezi negativ. Statutul de răspuns acceptat înseamnă doar că autorul întrebării îl consideră suficient de bun pentru întrebarea sa, dar nu indică calitatea sau corectitudinea generală, acestea fiind indicate de numărul de voturi pozitive.
