Отключить форматирование в текстовой области


Я использую следующий код в своем плагине для отображения поля <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');
Author: flashk, 2013-02-11

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;
}

Я верю, что это решит вашу проблему.

 2
Author: s_ha_dum, 2013-02-11 20:36:33

Я обнаружил, что wpautop сохранит содержимое тегов <pre>. Поместив тег <pre> вокруг тега <textarea>, я могу предотвратить изменение содержимого текстовой области.

echo '<pre><textarea>'.esc_textarea($message).'</textarea></pre>';

Я не уверен, почему wpautop также не игнорирует теги <textarea> по умолчанию. Я не могу представить себе сценарий, в котором вы хотели бы, чтобы wpautop применялось к содержимому текстовой области. Может быть, это просто оплошность.

 0
Author: flashk, 2013-02-13 17:30:43