Редактор удаляет теги <p>
Как предотвратить удаление редактором моих тегов <p>
и "пустых ( )" div-ов на страницах?
Поскольку @scribu попросил пример кода, вот он:
Ввод:
<p>текст</p>
<div> </div>
Вывод:
текст

У меня были проблемы с TinyMCE Advanced. Я долго мучился с этим. В итоге обнаружил простое решение - использовать шорткоды!
Поместите этот код в functions.php и вставляйте [br] там, где вам нужен тег br.
add_shortcode("br", "br_tag");
function br_tag(){
return("<br/>");
}

1) Попробуйте несколько различных плагинов, которые отключают форматирование и останавливают встроенное в WordPress удаление лишних абзацев и пробелов: http://wordpress.org/extend/plugins/search.php?q=formatting&sort=
2) Вы можете обмануть WordPress, заставив его добавить разрыв абзаца, используя <b> <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');

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

Это старый вопрос, но возможно, данное решение поможет вам или кому-то еще с частью проблемы:
add_filter('wp_insert_post_data', function ($data, $postarr) {
$data['post_content'] = wpautop($data['post_content']);
return $data;
}, 10, 2);
Этот код добавляет теги абзацев перед сохранением контента. И конечно же, редактор по-прежнему понимает, как их обрабатывать ;)
Он не поможет с проблемой
, но вы можете задаться вопросом - действительно ли они необходимы? Возможно, проблему можно решить с помощью CSS? Просто пытаюсь помочь. Либо используйте хак (<b> <b/>
), который объяснил @markratledge.
