Остановить WordPress, автоматически отображая теги <p> </ p>

WordPress автоматически генерирует множество нежелательных тегов <p></p> . Даже тег img также переносится этими тегами <p> . Таким образом, это создает нежелательные пробелы на сайте. Я пробовал много способов удалить те теги: –

 preg_replace(array('<p>','</p>'),array('',''),the_content(),1); remove_filter( 'the_content', 'wpautop' ); preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content) 

для меня ничего не работает. Сначала я хочу знать, почему эти теги автоматически генерируются? И как я могу это исправить?

Сам редактор WordPress Visual Editor создает теги для новых строк.

Вы можете попытаться удалить фильтр wpautop из the_excerpt или the_content

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

Иногда это не работает (не работало для меня в прошлом, а не с PHP).

Вы можете попробовать использовать Javascript / jQuery, поместить этот код после загрузки DOM или перед закрывающим </body> .

 jQuery('p:empty').remove(); 

Удалит все пустые элементы <p></p> со всего документа.

вы можете попробовать этот плагин

 http://wordpress.org/plugins/raw-html/ 

или же пользователь это в файле functions.php темы

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

Вам нужно запустить функцию remove_filter в after_setup_theme . Причина заключалась в том, что он может быть переполнен позже контентом или выдержкой. Таким образом, вы будете использовать функцию, как следует

 function remove_the_wpautop_function() { remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' ); } add_action( 'after_setup_theme', 'remove_the_wpautop_function' ); 

Перейдите в область редактирования темы администратора WP.

Добавьте этот код в файл functions.php и сохраните его.

 <?php 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] [/ raw], чтобы окружать те части сообщения / страницы, которые вы не хотите форматировать.

ИЛИ

  <?php the_content(); ?> 

и поместите это непосредственно выше:

 <?php remove_filter ('the_content', 'wpautop'); ?> 

он должен выглядеть так:

 <?php remove_filter ('the_content', 'wpautop'); ?> <?php the_content(); ?> 

Существует множество плагинов для отключения авто в WordPress или вы можете использовать следующий фильтр для удаления autop:

 remove_filter( 'the_content', 'wpautop' ); 

Однако, если вам нужно стилизовать и форматировать содержимое из wp-редактора, вы не сможете это сделать, если вы удалили autop.

Если вы хотите продолжить использование функции autop, но хотите удалить пустой тег p, вы можете сделать это с помощью jQuery.

Я могу удалить ненужные пустые теги p, используя следующие коды:

 jQuery(document).ready(function(){ $ = jQuery; $('p').each(function() { var $this = $(this); if($this.html().replace(/\s|&nbsp;/g, '').length == 0) $this.remove(); }); }); 
 $content = preg_replace('#^<\/p>|<p>$#', '', $content); echo do_shortcode($content); 

Я попробовал его, используя его в коротком коде, и это сработало для меня.

Я думаю, это будет хорошо работать,

 function my_format_TinyMCE( $in ) { $in['wpautop'] = false; return $in; } add_filter( 'tiny_mce_before_init', 'my_format_TinyMCE' );