Сохранение HTML-форматирования при переключении между визуальным и HTML-редактором
Я искал решение, которое позволит редактировать HTML-код так, чтобы он оставался неизменным после переключения между визуальным редактором и обратно.
Я пробовал множество вариантов, но безуспешно:
- плагин wp-no-format
- плагин Raw HTML
- ввод всего HTML-кода в одну строку
Если бы я был единственным, кто управляет контентом, я бы просто отключил визуальный редактор. Но поскольку у меня есть несколько контент-менеджеров и страницы, содержащие HTML (например, формы) и контент, который им нужно редактировать, это не вариант.
Буду благодарен за любые предложения.

Я точно понимаю, как вы себя чувствуете, и, к сожалению, эта проблема кроется в ядре WordPress, а не в TinyMCE или проблемах совместимости с браузерами. Я написал плагин, который позволяет форматировать HTML-разметку в редакторе HTML, переключаться между ним и визуальной вкладкой без влияния на исходный код, а также вносить изменения в визуальной вкладке, не нарушая исходное форматирование HTML...
http://wordpress.org/extend/plugins/preserved-html-editor-markup/
Он также сохраняет табуляции — только 4 пробела :( — и улучшает совместимость с HTML5.
Единственная «ловушка» в том, что он отключает wpautop. Я взял слово «ловушка» в кавычки, потому что некоторые ненавидят, когда редактор оборачивает их контент в теги <p>. В результате визуальный редактор будет использовать теги <br> для переносов строк, поэтому вам, возможно, придется подкорректировать таблицы стилей.
Наслаждайтесь!

Я обновил плагин с несколькими функциями, которые решают проблему отсутствия wpautop. Теперь визуальный редактор можно настроить для вставки тегов p или br или обоих (два последовательных переноса строки создают тег p). Также он поддерживает встроенный javascript и css. В версии 1.5, которая скоро выйдет, будет поддержка блоков кода javascript. Если вы хотите, чтобы ваша разметка выглядела так, как вы её написали, это определённо тот плагин, который стоит использовать. Ничего похожего по качеству я не встречал.

Огромное спасибо, это единственное решение, которое я нашёл, чтобы визуальный редактор (после сохранения) не изменял HTML.

Вы можете попробовать эти плагины:
В TinyMCE Advanced есть настройка Прекратить удаление тегов <p>
и <br />
при сохранении и показывать их в HTML-редакторе

Если вам нужно защитить только отдельные участки кода от изменений, вы можете сохранить этот конфиденциальный HTML, встраиваемый контент и т.д. в пользовательские поля.
С помощью этого плагина шорткодов вы можете вставлять содержимое пользовательских полей БЕЗ ОБРАБОТКИ в любую запись, страницу или даже виджет, используя что-то вроде: [include "имя моего пользовательского поля"]. Также можно извлекать общие фрагменты из других записей с помощью [include global="shared_code_menu"].
Это дешёвая альтернатива с ограничениями, но она лёгкая и простая в использовании.

Следующий плагин сработал у меня.

Добавьте это в ваш файл functions.php
function wp_tiny_mce_sanitize_fix( $init )
{
$init['extended_valid_elements'] = 'div[*], article[*], span[*], p[*]';
$init['remove_linebreaks'] = false;
$init['convert_newlines_to_brs'] = true;
$init['remove_redundant_brs'] = false;
return $init;
}
add_filter( 'tiny_mce_before_init', 'wp_tiny_mce_sanitize_fix' );

Хорошо, давайте перенесём это в ответ. Вам нужно что-то вроде этого:
-Заголовок-
Пример поста
-Содержание-
лалалалалалалалалалала
<div><a href="blah.com">Blah</a></div>
Список подсветчиков синтаксиса:
- SyntaxHighlighter TinyMCE Button
- WP SyntaxHighligter
- RBCODE
- Результаты поиска в WordPress Extend

Хм, честно говоря, не совсем понимаю, что вы пытаетесь донести этим ответом. Не могли бы вы объяснить подробнее? Вы понимаете суть проблемы, которую я пытаюсь решить?

Я спросил, хотите ли вы показать HTML, вы сказали да. Именно это и делает подсветка синтаксиса. Если это не то, что вам нужно, то извините, но я так это понял. Итак, вы пытаетесь использовать пользовательский HTML внутри записи, чтобы изменить её внешний вид?

Проблема, которую я пытаюсь решить: 1) ввести HTML в режиме HTML. 2) переключиться в режим Дизайна. 3) вернуться обратно в режим HTML. HTML был изменён, хотя я этого не хотел.
