WordPress tinyMCE продолжает оборачивать теги в HTML-коды при сохранении

Вопрос или проблема

WordPress tinyMCE продолжает добавлять <p> теги, когда я сохраняю свои пользовательские типы записей в визуальном режиме!

Я искал множество решений, но ничего не работает. Вот решение, которое я нашел, но оно не может остановить wordpress от добавления раздражающих <p> тегов из моего html-кода:

Javascript:

<script type="text/javascript">
     tinyMCE.init({force_p_newlines : false});
</script>

PHP

function tinymce_remove_root_block_tag( $init ) {
    $init['wpautop'] = false; 
    $init['force_p_newlines'] = false; 
    $init['forced_root_block'] = false; 
    return $init;
}
add_filter( 'tiny_mce_before_init', 'tinymce_remove_root_block_tag' );

Я не хочу никаких решений, которые используют the_content хук, потому что это все равно позволяет <p> тегам находиться внутри текстового редактора wordpress. Пример:

remove_filter ("the_content", "wpautop");

Что еще мне следует использовать, чтобы остановить tinyMCE от вмешательства в html-код, добавляя свои автозаменные <p> теги?

Я использую это на своих установках, чтобы избавиться от p тегов вокруг изображений:

/*
*
* Удалить раздражающие <p> теги вокруг изображений, создают беспорядок с моим стилем
*
*/

function my_filter_ptags_on_images($content)
{
    return preg_replace('/<p>(\s*)(<img .* \/>)(\s*)<\/p>/iU', '\2', $content);
}

add_filter('the_content', 'my_filter_ptags_on_images');

Ответ или решение

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

Причины проблемы

TinyMCE — это редактор WYSIWYG (What You See Is What You Get), который автоматически добавляет теги параграфов (<p>) вокруг текста для поддержания структуры контента. По умолчанию WordPress применяет функцию wpautop, которая обрабатывает текст и автоматически добавляет теги <p> и <br>. Этого поведения можно избежать, но для этого потребуются некоторые изменения как в JavaScript, так и в PHP.

Решения

Вы уже предприняли попытки отключить автоматическое формирование тегов <p>, но они оказались неэффективными. Давайте рассмотрим несколько методов, которые могут помочь:

1. Изменения в конфигурации TinyMCE

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

function tinymce_disable_p_tags( $init ) {
    $init['wpautop'] = false; 
    $init['force_p_newlines'] = false; 
    $init['forced_root_block'] = false; 
    return $init;
}
add_filter( 'tiny_mce_before_init', 'tinymce_disable_p_tags' );

Этот код добавляется в файл functions.php вашей темы. Он гарантирует, что при сохранении контента в редакторе не будут добавляться никакие теги <p>.

2. Удаление тегов <p> из изображения

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

function my_filter_ptags_on_images($content)
{
    return preg_replace('/<p>(\s*)<img(.*?)\/>(\s*)<\/p>/i', '<img$2/>', $content);
}
add_filter('the_content', 'my_filter_ptags_on_images');

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

3. Полная блокировка wpautop

Если вам совершенно не нужны теги <p>, вы можете удалить фильтрацию wpautop:

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

Этот код уберёт автоматическое добавление тегов параграфа из всего контента. Однако вы упомянули, что не хотите использовать этот метод, так как это касается также елементов текста в редакторе.

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...