Cineva poate explica cazurile de utilizare pentru esc_html?

3 nov. 2016, 00:00:41
Vizualizări: 18.7K
Voturi: 6

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

5
Comentarii

Cred că o folosesc pentru a internaționaliza tema

user3635808 user3635808
3 nov. 2016 00:07:05

@user3635808 Pentru traducere? Asta are mai mult sens. Mă uitam doar din perspectiva securității și nu am luat în considerare altceva

John_911 John_911
3 nov. 2016 00:12:00

Da, pentru traducere.

user3635808 user3635808
3 nov. 2016 00:12:30

@user3635808 Ahhh, nici nu am observat că mă uitam la esc_html în loc de esc_html__ - observă underscore-urile duble de la sfârșit.

John_911 John_911
3 nov. 2016 00:15:32

@user3635808 Asta ar putea fi un răspuns bun dacă adaugi niște cercetări și exemple :)

Howdy_McGee Howdy_McGee
3 nov. 2016 00:18:28
Toate răspunsurile la întrebare 4
2
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.

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

3 nov. 2016 01:41:10
Comentarii

Acesta ar trebui să fie răspunsul acceptat.

Mac Mac
22 nov. 2017 20:44:30

@Mac, Da, acesta ar trebui acceptat. esc_html__ interzice utilizarea HTML în șirurile traduse.

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

esc_html() realizează două lucruri:

  1. Verifică existența caracterelor UTF8 invalide într-un șir de text.
  2. 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.

3 nov. 2016 00:46:15
Comentarii

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.

amieiro amieiro
10 oct. 2021 07:50:42
0

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

22 nov. 2017 20:43:54
1

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.

6 iun. 2018 06:57:27
Comentarii

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.

Mark Kaplun Mark Kaplun
6 iun. 2018 07:11:51