¿Alguien puede explicar los casos de uso de esc_html?

3 nov 2016, 00:00:41
Vistas: 18.7K
Votos: 6

Estoy revisando el tema inicial _s (underscores) y veo que están usando esc_html para casi todo. Aquí un ejemplo de functions.php:

register_nav_menus( array(
        'primary' => esc_html__( 'Primary', '_s' ), // Registrar menú principal
) );

register_sidebar( array(
        'name'          => esc_html__( 'Sidebar', '_s' ), // Nombre del sidebar
        'id'            => 'sidebar-1',
        'description'   => esc_html__( 'Add widgets here.', '_s' ), // Descripción
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
        'after_widget'  => '</section>',
        'before_title'  => '<h2 class="widget-title">',
        'after_title'   => '</h2>',
) );

Mi entendimiento actual de esc_html es que se debe usar cuando mostramos datos de la base de datos o entradas del usuario.

¿Por qué escapar los nombres del menú y del sidebar?

Solo está disponible para personas con acceso a los archivos php y no parece guardarse en la base de datos. Revisé la base de datos y no encontré nada relacionado con los nombres, corríjanme si estoy equivocado.

¿El tema underscores está siendo excesivamente cauteloso con todo?

Gracias

5
Comentarios

Creo que lo están usando para internacionalizar el tema

user3635808 user3635808
3 nov 2016 00:07:05

@user3635808 ¿Para traducción? Eso tiene más sentido. Solo lo estaba viendo desde el punto de vista de seguridad y no había considerado nada más

John_911 John_911
3 nov 2016 00:12:00

Sí, para traducción.

user3635808 user3635808
3 nov 2016 00:12:30

@user3635808 Ahhh, ni siquiera me di cuenta de que estaba buscando esc_html en lugar de esc_html__ - nota los dobles guiones bajos al final.

John_911 John_911
3 nov 2016 00:15:32

@user3635808 Eso podría ser una buena respuesta si añades algo de investigación y ejemplos :)

Howdy_McGee Howdy_McGee
3 nov 2016 00:18:28
Todas las respuestas a la pregunta 4
2
esc_html__( string $texto, string $dominio = 'default' )

Recupera la traducción de $texto y la escapa para un uso seguro en salida HTML. por lo que esc_html__() se utiliza para internacionalizar así como con fines de seguridad.

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

3 nov 2016 01:41:10
Comentarios

Esta debería ser la respuesta aceptada.

Mac Mac
22 nov 2017 20:44:30

@Mac , Sí, esta debería ser aceptada. esc_html__ prohíbe el uso de HTML en cadenas traducidas.

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

esc_html() realiza dos funciones:

  1. Verifica caracteres UTF8 inválidos en una cadena de texto.
  2. Convierte varios caracteres especiales en sus entidades HTML, específicamente maneja: &, <, >, “, y ‘.

Usarla en lugar de __(), _e y otras funciones de internacionalización (i18n) protege tu sitio web de posibles errores que pueden ocurrir con traductores que podrían usar texto que contiene (1) caracteres UTF8 inválidos o (2) código HTML no deseado. Créeme, muchos traductores sentirán la tentación de usar etiquetas HTML 'bonitas' como <i>, <b>, etc., y lo que es peor, no las cerrarán correctamente.

3 nov 2016 00:46:15
Comentarios

Si echas un vistazo al código fuente de esc_html__(), puedes ver que esta función solo llama a la función esc_html() con la traducción de la cadena, así que lo que este post explica son los beneficios del escape y por qué los desarrolladores escaparon estas cadenas.

amieiro amieiro
10 oct 2021 07:50:42
0

Las aguas están turbias aquí. La pregunta del OP pregunta sobre esc_html(), pero su código claramente usa esc_html__(). Estas no son lo mismo. La respuesta aceptada es incorrecta: se refiere a esc_html(), que trata con el escape seguro de bloques HTML. La respuesta de Kanon Chowdhury debería ser la aceptada, porque el código del OP trata con los aspectos de internacionalización (I18n) del tema inicial Underscores de WordPress (que utiliza la función esc_html__()).

22 nov 2017 20:43:54
1

esc_html() y esc_html__() NO son las mismas funciones. La principal diferencia es que esc_html() toma solo una cadena y devuelve una cadena HTML escapada. Por otro lado, esc_html__() toma 2 cadenas como parámetros y devuelve una cadena traducida y escapada.

La respuesta aceptada es incorrecta, de hecho.

6 jun 2018 06:57:27
Comentarios

Si crees que una respuesta es incorrecta (no solo que no es útil), puedes votar en contra. El estado de respuesta aceptada solo significa que el autor de la pregunta la considera lo suficientemente buena para su pregunta, pero no indica calidad ni siquiera corrección general; esos aspectos se reflejan en la cantidad de votos a favor.

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