Вопрос:
У меня есть использовать редактор WordPress, но я не хочу, чтобы удалить все дополнительные <p></p> и <br> теги.
Как остановить удаление тегов p & br в редакторе wordpress без каких-либо плагинов
Кто-нибудь, пожалуйста, помогите.
Ответ №1
Недавно я попытался решить ту же проблему и нашел это https://www.leighton.com/blog/stop-tinymce-in-wordpress-3-x-messing-up-your-html-code
Решение, которое работает После того, как вы сделали настройку, которая была немного лучше, чем готовый способ работы в течение 6 месяцев, мы обнаружили, что метод модификации JavaScript выше не работал из-за изменений в ядре TinyMCE.js файл, представленный с последними версиями WordPress 3.x, и что в наших носах всегда было простое, чистое и высокоэффективное решение, которое по существу копирует наш старый метод JavaScript, но с использованием перехватчиков PHP и WordPress для изменения параметров TinyMCE использует, когда он инициируется.
Этот короткий фрагмент кода PHP должен быть помещен в ваши файлы functions.php
function override_mce_options($initArray) { $opts = ‘*[*]’; $initArray[‘valid_elements’] = $opts; $initArray[‘extended_valid_elements’] = $opts; return $initArray; } add_filter(‘tiny_mce_before_init’, ‘override_mce_options’);
… и вуаля! больше не возиться с исходным кодом при сохранении или переключении просмотров
Ответ №2
У меня есть решение, как остановить удаление <br> тегов или двойные (<br><br>) разрывы строк.
- Внесите изменения в свой файл /wp-content/themes/your_theme_name/functions.php
Добавьте 2 строки в начало своих функций.
remove_filter(‘the_content’, ‘wpautop’); remove_filter(‘the_excerpt’, ‘wpautop’);
Это отключит функцию wpautopop.
-
Внесите изменения в файл /wp-includes/formatting.php в функцию wpautop.
A) Измените function wpautop( $pee, $br = true) на function wpautop( $pee, $br = false).
Это дополнительно отключит функцию wpautopop из всех мест.
B) Изменить $pee = preg_replace(‘|<brs*/?>s*<brs*/?>|’, «nn», $pee); в
$pee1 = $pee; $pee = preg_replace(‘|<brs*/?>s*<brs*/?>|’, «nn», $pee); $pee = $pee1;
Это предотвратит систему от удаления двойных <br> меток. (Я знаю, что код странный, но простой //$pee здесь не помогает из-за тега ?>).
C) Изменить $pee = preg_replace(«/nn+/», «nn», $pee); to //$pee = preg_replace(«/nn+/», «nn», $pee);
Это предотвратит удаление системы несколькими разрывами строк.
D) Измените это:
$pee = preg_replace(‘!<p>s*(</?’ . $allblocks . ‘[^>]*>)!’, «$1», $pee);
к тому, что:
//$pee = preg_replace(‘!<p>s*(</?’ . $allblocks . ‘[^>]*>)!’, «$1», $pee);
Это не позволит системе удалять разрывы строк после открытия или перед тегом элемента закрывающего блока, например <div>, <article> и т.д.
E) Измените это:
$pee = preg_replace(‘!(</?’ . $allblocks . ‘[^>]*>)s*</p>!’, «$1», $pee);
к тому, что:
//$pee = preg_replace(‘!(</?’ . $allblocks . ‘[^>]*>)s*</p>!’, «$1», $pee);
Довольно же: это предотвратит удаление системы прерываний после открытия или перед тегом элемента закрывающего блока, например <div>, <article> и т.д.
F) Измените это:
$pee = preg_replace(‘!<br />(s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!’, ‘$1’, $pee);
к тому, что:
// $pee = preg_replace(‘!<br />(s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!’, ‘$1’, $pee);
Это предотвратит систему от удаления <br> в конце блока.
G) Измените это:
$pee = preg_replace(‘!(</?’ . $allblocks . ‘[^>]*>)s*<br />!’, «$1», $pee);
к тому, что:
//$pee = preg_replace(‘!(</?’ . $allblocks . ‘[^>]*>)s*<br />!’, «$1», $pee);
Это предотвратит систему от удаления <br> после открытия или закрытия блока метки.
Надеюсь, это поможет! И прочитайте комментарии в этом файле – они помогут вам понять, что вам нужно включить или выключить.
Ответ №3
У меня была та же проблема, и я использовал тег для разрыва пространства, чтобы “исправить” его. Содержимое моей текстовой вкладки редактора будет выглядеть примерно так:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras luctus placerat risus, vel suscipit nibh cursus sed. Donec sit amet urna maximus enim malesuada eleifend et sit amet nibh. Fusce accumsan justo id orci suscipit pulvinar. В feugiat dolor id blandit luctus. Phasellus placerat enim felis, quis elementum risus ultricies sagittis.