От­клю­чение ав­то­фор­ма­ти­ро­ва­ния в WordPresss

Wordpress редактор - Отключаем автоформатирование в wordpress

Воз­мож­но, вы за­ме­ти­ли, что при пуб­ли­ка­ции по­стов в wordpress неко­то­рые сим­во­лы са­ми за­ме­ня­ют­ся на дру­гие, до­бав­ля­ют­ся спе­ци­аль­ные зна­ки аб­за­цев, от­сту­пы, пе­ре­но­сы строк.В WordPress есть функ­ция ав­то­ма­ти­че­ско­го фор­ма­ти­ро­ва­ния тек­ста в со­от­вет­ствии с пра­ви­ла­ми движ­ка, ко­то­рые за­ча­стую не по­да­ют­ся ло­ги­ке и ча­ще все­го ме­ша­ют пуб­ли­ко­вать опре­де­лен­ный по­стов (на­при­мер, с ис­ход­ным ко­дом, ко­то­рый в изоби­лии име­ет­ся в ко­дер­ских бло­гах). Как ре­шить эту про­бле­му мы и рас­смот­рим в этом по­сту.

Есть два спо­со­ба по­бо­роть эту на­пасть, от­клю­чить ав­то­фор­ма­ти­ро­ва­ние пол­но­стью или ча­стич­но толь­ко в опре­де­лен­ном шор­ко­де. Для се­бя вы­брал пер­вый ва­ри­ант для ме­ня так про­ще дер­жать все под кон­тро­лем неже­ли на­де­ять­ся на нело­гич­ное фор­ма­ти­ро­ва­ние движ­ка. Для тех кто пло­хо раз­би­ра­ет­ся в html или не хо­чет тра­тить свое вре­мя на это, то ему по­дой­дет вто­рой ва­ри­ант, что бы не при­хо­ди­лось са­мо­сто­я­тель­но рас­став­лять все те­ги в тек­сте сво­и­ми ру­ка­ми.

1. ОТ­КЛЮ­ЧЕ­НИЕ АВ­ТО­ФОР­МА­ТИ­РО­ВА­НИЕ ПОЛ­НО­СТЬЮ

А . Как от­клю­чить ав­то­фор­ма­ти­ро­ва­ние p и br

При пуб­ли­ка­ции по­стов в WordPress по умол­ча­нию фор­ма­ти­ру­ет­ся вве­ден­ный текст, за­клю­чая аб­за­цы в тег

p

. А так же встав­ля­ет пе­ре­нос на но­вую стро­ку

в про­из­воль­ных слу­ча­ях, ко­гда и как за­хо­чет­ся wordpress.От­клю­чать мож­но до­ба­вив в файл functions.​php те­мы строч­ку ко­да:

PHP

1

2

3

remove_filter( 'the_content', 'wpautop' ); // От­клю­ча­ем ав­то­фор­ма­ти­ро­ва­ние в пол­ном по­сте

remove_filter( 'the_excerpt', 'wpautop' ); // От­клю­ча­ем ав­то­фор­ма­ти­ро­ва­ние в крат­ком(анон­се) по­сте

remove_filter('comment_text', 'wpautop'); // От­клю­ча­ем ав­то­фор­ма­ти­ро­ва­ние в ком­мен­та­ри­ях

ес­ли вам на­до вы­клю­чить ав­то­фор­ма­ти­ро­ва­ние толь­ко в опре­де­лен­ных стра­ни­цах, то в шаб­лоне нуж­ной вам стра­ни­цы, пе­ред вы­во­дом кон­тен­та по­ста:

PHP

1

the_content();

необ­хо­ди­мо до­ба­вить:

PHP

1

remove_filter( 'the_content', 'wpautop' ); // От­клю­ча­ем ав­то­фор­ма­ти­ро­ва­ние в пол­ном по­сте

Б . Как от­клю­чить ав­то­фор­ма­ти­ро­ва­ние спец­сим­во­лов

В за­да­чи функ­ции фор­ма­ти­ро­ва­ния тек­ста вхо­дит из­ме­нить текст на бо­лее пра­виль­ный, чи­та­е­мый и ви­зу­аль­но при­вле­ка­тель­ный.Текст из­ме­ня­ет­ся сле­ду­ю­щим об­ра­зом:

"текст в кавычках" станет “текстом в лапках”'текст в кавычках' станет ‘текстом в лапках’          --- станет —           -- станет –          ... станет …          (c) станет ©          (r) станет ®         (tm) станет ™           '' станет ”            станет “  president's станет president’s  presidents' станет presidents’          12' станет 12′          12" станет 12″          2x4 станет 2×4

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

Ес­ли вам необ­хо­ди­мо от­клю­чить дан­ную функ­ции, то вы­пол­ни­те сле­ду­ю­щие дей­ствия.

До­бав­ля­ем в файл functions.​php сле­ду­ю­щие стро­ки:

PHP

1

2

3
remove_filter('the_content','wptexturize'); // От­клю­ча­ем ав­то­фор­ма­ти­ро­ва­ние в пол­ном по­сте

remove_filter('the_excerpt','wptexturize'); // От­клю­ча­ем ав­то­фор­ма­ти­ро­ва­ние в крат­ком(анон­се) по­сте

remove_filter('comment_text', 'wptexturize'); // От­клю­ча­ем ав­то­фор­ма­ти­ро­ва­ние в ком­мен­та­ри­ях

2. ОТ­КЛЮ­ЧЕ­НИЕ АВ­ТО­ФОР­МА­ТИ­РО­ВА­НИЕ ЧА­СТИЧ­НО

А вот воз­мож­ность от­клю­чать ав­то­ма­ти­че­ское фор­ма­ти­ро­ва­ние для опре­де­лен­ной ча­сти тек­ста бы­ло бы по­лез­ным для мно­гих.

Пер­вым де­лом мы со­зда­ем функ­цию, до­ста­точ­но вста­вить в файл functions.​php пред­став­лен­ный ни­же код:

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
function my_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', 'my_formatter', 99);

По­сле это­го мож­но ис­поль­зо­вать в за­пи­сях шор­код

[raw]

, с по­мо­щью ко­то­ро­го мож­но вы­де­лять текст, на ко­то­рый не бу­дет рас­про­стра­нят­ся ав­то­ма­ти­че­ское фор­ма­ти­ро­ва­ние:

XHTML

1
[raw]Этот текст не бу­дет ав­то­ма­ти­че­ски от­фор­ма­ти­ро­ван.[/raw]