Редактор удаляет теги <p>

28 февр. 2011 г., 05:37:11
Просмотры: 25.9K
Голосов: 9

Как предотвратить удаление редактором моих тегов <p> и "пустых (&nbsp;)" div-ов на страницах?

Поскольку @scribu попросил пример кода, вот он:

Ввод:

<p>текст</p>
<div>&nbsp;</div>

Вывод:

текст
6
Комментарии

Почему минусовые оценки?

Eeyore Eeyore
8 мар. 2011 г. 03:52:44

просто используйте этот плагин, в нем есть встроенная опция для автоматического удаления тегов p и br http://wordpress.org/extend/plugins/tinymce-advanced/

User User
3 авг. 2011 г. 13:54:33

Да ладно, неужели за последние 8 лет так и не нашли решение этой проблемы... Учитывая, что я тоже с этим сталкиваюсь, и вроде бы нет никаких причин, почему элементы <p> должны удаляться. Почему это до сих пор происходит?

Lee Lee
21 мая 2019 г. 12:11:02

Если вы собираетесь добавлять HTML-теги, почему бы просто не использовать HTML-редактор?

Chip Bennett Chip Bennett
3 авг. 2011 г. 14:36:00

и как нам это сделать?

jeff jeff
30 сент. 2013 г. 13:13:27

К вашему сведению, вот что я использую, и на фронтенде всё равно удаляются теги <p>, окружающие шорткоды. Внутри шорткода никаких действий не происходит, но странно, что они исчезают без причины.

Lee Lee
21 мая 2019 г. 12:10:12
Показать остальные 1 комментариев
Все ответы на вопрос 7
1

У меня были проблемы с TinyMCE Advanced. Я долго мучился с этим. В итоге обнаружил простое решение - использовать шорткоды!

Поместите этот код в functions.php и вставляйте [br] там, где вам нужен тег br.

add_shortcode("br", "br_tag");

function br_tag(){
        return("<br/>");                            
}
31 авг. 2012 г. 00:16:38
Комментарии

Ха-ха, это WordPress в двух словах.

qwerty qwerty
27 нояб. 2012 г. 11:39:37
0

1) Попробуйте несколько различных плагинов, которые отключают форматирование и останавливают встроенное в WordPress удаление лишних абзацев и пробелов: http://wordpress.org/extend/plugins/search.php?q=formatting&sort=

2) Вы можете обмануть WordPress, заставив его добавить разрыв абзаца, используя <b>&nbsp;<b/> в HTML-редакторе. Это неразрывный пробел внутри тегов <b>. Вы не сможете увидеть это в визуальном редакторе, поэтому добавляйте его в HTML-редакторе. Это некрасиво, но работает без необходимости полностью отключать форматирование.

3) Также вы можете сделать это в functions.php, а затем обернуть текст, который не должен форматироваться, тегами <!-- noformat on --> и <!-- noformat off -->.

function newautop($text)
{
    $newtext = "";
    $pos = 0;

    $tags = array('<!-- noformat on -->', '<!-- noformat off -->');
    $status = 0;

    while (!(($newpos = strpos($text, $tags[$status], $pos)) === FALSE))
    {
        $sub = substr($text, $pos, $newpos-$pos);

        if ($status)
            $newtext .= $sub;
        else
            $newtext .= convert_chars(wptexturize(wpautop($sub)));      // Применяем обе функции (быстрее)

        $pos = $newpos+strlen($tags[$status]);

        $status = $status?0:1;
    }

    $sub = substr($text, $pos, strlen($text)-$pos);

    if ($status)
        $newtext .= $sub;
    else
        $newtext .= convert_chars(wptexturize(wpautop($sub)));      // Применяем обе функции (быстрее)

    // Удаляем теги
    $newtext = str_replace($tags[0], "", $newtext);
    $newtext = str_replace($tags[1], "", $newtext);

    return $newtext;
}

function newtexturize($text)
{
    return $text;   
}

function new_convert_chars($text)
{
    return $text;   
}

remove_filter('the_content', 'wpautop');
add_filter('the_content', 'newautop');

remove_filter('the_content', 'wptexturize');
add_filter('the_content', 'newtexturize');

remove_filter('the_content', 'convert_chars');
add_filter('the_content', 'new_convert_chars');
28 февр. 2011 г. 06:23:15
0

Добавьте в ваш functions.php

remove_filter ('the_content', 'wpautop');
remove_filter ('the_excerpt', 'wpautop');

Но вам придется добавлять теги <p> и <br/> вручную. Эти теги не сохраняются в базе данных.

28 февр. 2011 г. 08:58:25
0

Я знаю, что это довольно старый форум... Я наткнулся на множество обсуждений по поводу того, как визуальный редактор удаляет теги при переключении вкладок... Я просто последовал по этой ссылке: http://rubayathasan.com/reviews/enabling-line-break-in-wordpress/#comment-1349250

и установил TinyMCE Advanced... Теперь всё работает как часы, и у меня появилось больше возможностей для работы с визуальным редактором.

29 июн. 2015 г. 23:31:53
0

Это старый вопрос, но возможно, данное решение поможет вам или кому-то еще с частью проблемы:

add_filter('wp_insert_post_data', function ($data, $postarr) {
    $data['post_content'] = wpautop($data['post_content']);

    return $data;
}, 10, 2);

Этот код добавляет теги абзацев перед сохранением контента. И конечно же, редактор по-прежнему понимает, как их обрабатывать ;)

Он не поможет с проблемой &nbsp;, но вы можете задаться вопросом - действительно ли они необходимы? Возможно, проблему можно решить с помощью CSS? Просто пытаюсь помочь. Либо используйте хак (<b>&nbsp;<b/>), который объяснил @markratledge.

16 нояб. 2017 г. 21:53:22
0

Немного запоздалый ответ, но для тега <p> можно добавить класс или, возможно, другое свойство.

Например:

<p class="nothing-relevant">Foo</p>

не будет удалено (при использовании Gutenberg).

22 янв. 2019 г. 19:25:11
0
-1

Я обнаружил, что если добавить класс к тегу абзаца, WordPress не будет его удалять. Вам даже не обязательно иметь какой-либо CSS для этого класса.

10 окт. 2022 г. 23:26:46