¿Alguien puede explicar los casos de uso de esc_html?
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

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.

esc_html() realiza dos funciones:
- Verifica caracteres UTF8 inválidos en una cadena de texto.
- 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.

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.

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

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.

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.
