Когда мне нужно использовать esc attr при использовании внутренних функций WordPress
Когда я помещаю значение WordPress в тег атрибута, например, следующий метод не требует esc_attr
Например,
// JS code
alert('<?php echo get_bloginfo('name');?>');
Следующий метод действительно требует esc_attr
// JS code
alert('<?php echo esc_attr($post->post_title);?>');
Какое соглашение используется?
3 answers
Вы можете взглянуть на Кодекс.
Кодирует & "' (меньше, больше, амперсанд, двойная кавычка, одинарная кавычка). Никогда не будет дважды кодировать сущности.
Учитывая, что, возможно, обе эти строки нуждаются в очистке. Представьте себе название сайта, например >> "My" Website's Great Title <<"
Кроме того, поскольку вы используете это в Javascript, вам, вероятно, следует использовать esc_js
вместо этого.
Соглашение гласит: "поймите, как работает разметка и как злонамеренные хакеры работают и действуют соответственно". Вот как вы знаете, как использовать эти функции. Кроме того, Никому не доверяй.
Смотрите также эту статью нашего участника Стивена Харриса: Очистка и проверка данных С помощью WordPress
Вы используете esc_attr()
, когда выводите что-то, что должно быть в атрибуте HTML.
В вашем случае вы должны использовать esc_js()
или, возможно, json_encode()
вместо этого.
Если в названии вашего поста есть одинарная кавычка. Вывод вашего кода будет
Предупреждение ("Это плохо");
То есть, нарушив ваш код JavaScript, вы получите "Неожиданный идентификатор". При использовании esc_attr вывод будет
Предупреждение ("Это плохо");
Заголовок сообщения будет закодирован таким образом, чтобы он работал в строках.