Как отключить автоматическое форматирование текста в WordPress

В редакторе WordPress присутствует функция автоматического форматирования текста при размещении/редактировании постов. В ее обязанности входит добавление кавычек, отступов, переносов строк и пр. символов форматирования.

Очень часто этот функционал доставляет неудобства, особенно когда нужно создать страницу со сложным форматированием. Заметим, что автоформатирование продолжает работать даже после перехода в режим Текст, расставляя теги <p> и <br>, которые в редакторе нигде не отображаются и их просто невозможно удалить вручную.

Как в WordPress отключить автоматическое форматирование?

Отключить автоформатирование в редакторе WordPress можно как частично, так и полностью. Рассмотрим все доступные варианты.

Отметим, что все последующие шаги предусматривают редактирование основного конфигурационного файла активной WordPress-темы functions.php.

Если вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions.

Отключение <p> и <br>

В редакторе WordPress по умолчанию абзацы заключаются в теги <p></p>, после чего происходит перенос на новую строку (<br />).

Для отключения следует добавить следующие строки кода:

// отключение <p> и <br> в записях
remove_filter( 'the_content', 'wpautop' );
// отключение <p> и <br> в анонсе
remove_filter( 'the_excerpt', 'wpautop' );
// отключение <p> и <br> в комментариях
remove_filter( 'comment_text', 'wpautop' );

Отключение <p> и <br> на отдельных страницах

Чтобы отключить автоматическую вставку <p> и <br> на отдельной странице, нужно в ее шаблоне перед выводом контента поста (the_content()) добавить специальный фильтр:

// отключение <p> и <br> на отдельной странице
remove_filter( 'the_content', 'wpautop' );

Отключение спецсимволов

К спецсимволам относятся: кавычки, двойное тире, знак торговой марки, знак дюйма, троеточие и т.п. Для их отключения в редакторе WordPress применяется следующий код:

// отключение спецсимволов в записях
remove_filter( 'the_content', 'wptexturize' );
// отключение спецсимволов в анонсе
remove_filter( 'the_excerpt', 'wptexturize' ); 
// отключение спецсимволов в комментариях
remove_filter( 'comment_text', 'wptexturize' );

Отключение заглавной буквы Р

// отключение заглавной буквы Р в заголовках
remove_filter( 'the_title', 'capital_P_dangit', 11 );
// отключение заглавной буквы Р в записях
remove_filter( 'the_content', 'capital_P_dangit', 11 );
// отключение заглавной буквы Р в анонсе
remove_filter( 'the_excerpt', 'capital_P_dangit', 11 );
// отключение заглавной буквы Р в комментариях
remove_filter( 'comment_text', 'capital_P_dangit', 31 );

Частичное отключение автоформатирования

Иногда бывает нужно отключить автоматическое форматирование для определенной части текста. Для этого первым делом в файл functions.php нужно добавить строки кода:

function wpschool_formatter( $content ) {
    $new_content = '';
    $pattern_full = '{(\[raw\].*?\[/raw\])}is';
    $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';
    $pieces = preg_split( $pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE );

    foreach ( $pieces as $piece ) {
        if ( preg_match( $pattern_contents, $piece, $matches ) ) {
            $new_content .= $matches[1];
        } else {
            $new_content .= wptexturize( wpautop( $piece ) );
        }
    }
    return $new_content;
}

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_content', 'wptexturize' );
add_filter( 'the_content', 'wpschool_formatter', 99 );

После этого можно использовать в записях шорткод [raw], с помощью которого можно выделять текст, на который не будет распространяться автоматическое форматирование. Например:

[raw]Текст без автоформатирования.[/raw]
Курс WordPress-разработчик
Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров