Escape de la función WP incorporada devuelve cadenas

4

¿Se debería filtrar la salida de las funciones WP integradas, como get_permalink() y los complementos WP conocidos, como ACF (campos personalizados avanzados), como get_field() ?

Por ejemplo, get_permalink() llama a home_url() que llama a get_home_url() , ninguno de los cuales filtra los datos . De manera similar, el trabajo the_content() , the_title() y el resto de las funciones familiares relacionadas con Loop.

Por lo tanto, ¿es suficiente lo siguiente? ( no esc_attr() para las funciones WP y ACF )

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=get_the_permalink()?>">
        <img src="<?=get_field('homepage_thumbnail')['sizes']['thumbnail']?>" />
    </a>
<?php endwhile; ?>

¿O debería ser más cuidadoso con los datos provenientes del complemento? ( aviso esc_attr() agregado a la fuente de la imagen ACF, tercera línea )

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=get_the_permalink()?>">
        <img src="<?=esc_attr(get_field('homepage_thumbnail')['sizes']['thumbnail']?>)" />
    </a>
<?php endwhile; ?>

¿O debería ser súper cuidadoso incluso con las funciones WP de stock? ( aviso esc_attr() agregado a WP anchor href, segunda línea )

<?php while ($wp_query->have_posts() && __return_true($wp_query->the_post()) ) : ?>
    <a href="<?=esc_attr(get_the_permalink())?>">
        <img src="<?=esc_attr(get_field('homepage_thumbnail')['sizes']['thumbnail']?>)" />
    </a>
<?php endwhile; ?>
    
pregunta dotancohen 27.01.2016 - 10:48

2 respuestas

1

El escape se utiliza para producir HTML válido u otros formatos, y depende del contexto.

Se necesita escapar de una url en algo como <a href="<?php echo $url?>".... para reemplazar cualquier "&" personajes con & (aunque lo más probable es que los navegadores lo reparen por usted si no lo hace).

El escape de una url en un elemento de entrada como <input value="<?php echo $url?>"... no requiere el reemplazo de "&" pero requiere el reemplazo de cualquier carácter de cotización.

Entonces, en general, dado que el escape es sensible al contexto, puede asumir que la API de wordpress no lo escapará por usted. Lo que hacen los complementos, depende del propio complemento.

    
respondido por el Mark Kaplun 27.01.2016 - 13:40
3

Siempre debes escapar de tus datos, sea cual sea su origen. Para su ejemplo, las URL deben escaparse utilizando esc_url() .

WordPress tiene muchas funciones que pueden usarse. Hay un artículo en Validación de datos en el Codex que enumera las diversas funciones disponibles.

    
respondido por el RRikesh 27.01.2016 - 11:55

Lea otras preguntas en las etiquetas