Как удалить все HTML комментарии из контента? Хук the_content
Уже задавала вопрос ранее...
Пишу контент с html комментариями.
Вставляю этот html в страницу WordPress и комментарии хоть и не видны, но учитываются, что приводит к куче отступов по-вертикали.
Вопрос: как пофиксить? Кто сталкивался?
Спасибо за внимание.
UPD:
В коде страницы он превращается в параграфы
Стало понятно, что можно (нужно) использовать функции add_filter() и the_content
Но как это сделать правильно? Подскажите?
Необходимо чтобы на странице или записи находились тэги и выводилось на их месте «ничего».
Что-то типа.. (сама не знаю, что написать, чтобы выводилось на месте тэгов комментария «ничто».
/* Add empty paragraph only to Pages. */
function tag_comment_empty_added_page_content ( $content ) {
if ( is_page() ) {
return $content . '<!-- * -->';
}
return $content;
}
add_filter( 'the_content', 'tag_comment_empty_added_page_content');
Или может в таком ключе?
<?php
function tag_comment_empty_replace_content( $text_content ) {
if ( is_page() ) {
$text = array(
'<!-- * -->' => '',
);
$text_content = str_ireplace( array_keys( $text ), $text, $text_content );
}
Это все не работает, где-то ошибка.
Не понял что вам нужно. Нужно удалить все HTML комментарии из выводимого текста?
да, именно!
так как комментарии оборачиваются тегом <p> почему-то, со всеми вытекающими.. а именно отступы параграфов в контентной части.
Есть ли вставляете текст с html комментариями и он получается на фронте такой:
то можно вырезать такие "параграфы-пустышки" так:
function delete_paragraphs_with_html_comments( $content ) { return preg_replace( '~<p><!--.*?--></p>~', '', $content ); } add_filter( 'the_content', 'delete_paragraphs_with_html_comments' );Если я правильно понял задачу...
Возможно лучше удалить комменты еще до обработки контента функцией wpautop(). Так в целом код побыстрее будет. Ну и регулярку можно ускорить немного:
add_filter( 'the_content', 'delete_html_comments_from_content', 7 ); function delete_html_comments_from_content( $content ) { return preg_replace( '~<!--[^>]+-->~', '', $content ); }