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| /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' );