Отключить форматирование в текстовой области
Я использую следующий код в своем плагине для отображения поля <textarea>
на странице:
echo '<textarea required="required" name="Message" class="textarea" cols="70" rows="10">'.esc_textarea($message).'</textarea>';
Однако WordPress, похоже, вставляет теги <p>
и <br />
в содержимое текстовой области, если сообщение содержит символы новой строки. Я предполагаю, что это вызвано фильтром wpautop() по умолчанию.
Есть ли способ отключить фильтрацию содержимого <textarea>
на странице?
Редактировать
Еще немного информации о том, как работает мой плагин. Он создает крючок для the_content
, который будет добавлять данные к содержимому определенных страниц. Я все еще хочу, чтобы форматирование wpautop
применялось к добавляемому содержимому, только не для поля <textarea>
.
Вот примерный план настройки моего плагина:
function get_special_content()
{
$text = '';
// Customized content is appended to text here
// including the textarea field
return $text;
}
function my_plugin_content_hook($content)
{
if(is_some_special_page()) {
return $content.get_special_content();
}
return $content;
}
add_action('the_content', 'my_plugin_content_hook');
2 answers
Добавьте приоритет, чтобы переместить вашу функцию в конец очереди подключений.
add_action('the_content', 'my_plugin_content_hook', 1000);
Затем в вашей функции get_special_content
вам нужно будет вручную применить wpautop
к контенту, к которому вы хотите его применить.
function get_special_content()
{
$text = '';
$autopeed = 'content to autop';
$text .= apply_filters('wpautop',$autopeed);
$text .= "your textarea code";
return $text;
}
Я верю, что это решит вашу проблему.
Я обнаружил, что wpautop
сохранит содержимое тегов <pre>
. Поместив тег <pre>
вокруг тега <textarea>
, я могу предотвратить изменение содержимого текстовой области.
echo '<pre><textarea>'.esc_textarea($message).'</textarea></pre>';
Я не уверен, почему wpautop
также не игнорирует теги <textarea>
по умолчанию. Я не могу представить себе сценарий, в котором вы хотели бы, чтобы wpautop
применялось к содержимому текстовой области. Может быть, это просто оплошность.