Поддержка Проблемы и решения Удаление html-тегов из полей форм

  • Проблема:
    При вставки в пост многострочного textarea ВП вставляет теги <br /> и </p><p>
    т.е. вставляем в пост это (в HTML-режиме, ессно)

    <textarea>Вот тут
    вставим любой многострочный
    
    текст</textarea>

    а на странице, в textarea получаем (видим):

    Вот тут<br />
    вставим любой многострочный</p>
    
    <p>текст

    Как победить этот баг ВП? Т.е. где и как отключить фильтр wpautop для всех тегов форм (input, textarea и др)?
    Или мож какой другой способ исправить этот баг?

    В крайнем случае — мож какой плаг существует?

    Собсно, это продолжение этого. Но дело, как оказалось, не в плагине, а более глобально. И если в ВП 3,2 правка темы помогла, то при обновлении на 3,2,1 — уже не помогает.

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Юрий

    (@yube)

    function yb_unbreak_form($content) {
    	$content = preg_replace_callback(
    		'|(<form.*?</form>)|is', 'yb_unbreak', $content);
    	return $content;
    }
    
    function yb_unbreak($a) {
    	return str_replace('<br />', '', $a[1]);
    }
    
    add_filter('the_content','yb_unbreak_form', 9999);
    Автор wpuser

    (@wp-userphp)

    Юрий, благодарю.

    Эти функции можно просто вставить в wp-includes/default-filters.php ? Или куда как? (Ща экпеременить не могу. Да и я не настолько знаю ВП. 🙁 )

    И насколько я понимаю — эти функции не отменяют wpautop, и должны работать после него. Т.е. это как бэ доп. нагрузка. Правильно ж?

    Модератор Юрий

    (@yube)

    Ни в коем случае не надо трогать файлы движка! Такие прибамбасы вставляются либо в functions.php активной Темы, либо оформляются как плагины.

    Да, работает после всей встроенной обработки, вычищая все брыки внутри форм (если быть точным, то не все, а только <br />, оставляя <br> и <br/> — можно сказать, это фича, позволяющая автору безнаказанно побрыкаться в форме).

    Доп. нагрузка, разумеется, имеет место быть, но заметной она будет только на мегабайтных постах.

    Автор wpuser

    (@wp-userphp)

    Ни в коем случае не надо трогать файлы движка! Такие прибамбасы вставляются либо в functions.php активной Темы, либо оформляются как плагины.

    Вставить в functions.php темы не очень хоцца просто по причине того, что тем планируется много (с полсотни минимум), да и к тому же они периодически обновляются.

    Вариант с плагом вероятно был бы удобней в плане юзания, но у меня для этого ума не хватит. Да и опять — это ж доп. нагрузка. (Я вообще предпочитаю юзать плаги только там, где уж очень надо и нельзя\немогу обойтись правкой кода).

    Поэтому и хотелось исправить «глобально» в движке. (Теплится надежда что этот баг когда-нить будет пофиксен)

    (если быть точным, то не все, а только <br />, оставляя <br> и <br/> — можно сказать, это фича, позволяющая автору безнаказанно побрыкаться в форме).

    Ну там ещё параграфы надо почистить. Но эт я уже сам в состоянии 😉

    А побрыкаться думаю вряд ли удастся — в formatting.php:

    function esc_textarea( $text ) {
    	$safe_text = htmlspecialchars( $text, ENT_QUOTES );
    	return apply_filters( 'esc_textarea', $safe_text, $text );
    }

    Хотя смотря что Вы имели ввиду 😉

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Удаление html-тегов из полей форм» закрыта для новых ответов.