WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Как удалить все 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 );
	}

Это все не работает, где-то ошибка.

Заметки к вопросу:
Kama 2 года назад

Не понял что вам нужно. Нужно удалить все HTML комментарии из выводимого текста?

svetlana.ignatova.73 2 года назад

да, именно!
так как комментарии оборачиваются тегом <p> почему-то, со всеми вытекающими.. а именно отступы параграфов в контентной части.

0
svetlana.ignatova.73
2 года назад
  • 0
    campusboy4752 www.youtube.com/c/wpplus

    Есть ли вставляете текст с html комментариями и он получается на фронте такой:

    <p>Абзац 1 и Какой-то текст</p>
    <p><!-- Какой-то html комментарий --></p>
    <p>Абзац 2 и Какой-то текст</p>

    то можно вырезать такие "параграфы-пустышки" так:

    function delete_paragraphs_with_html_comments( $content ) {
    	return preg_replace( '~<p><!--.*?--></p>~', '', $content );
    }
    
    add_filter( 'the_content', 'delete_paragraphs_with_html_comments' );

    Если я правильно понял задачу...

    Kama 2 года назад

    Возможно лучше удалить комменты еще до обработки контента функцией wpautop(). Так в целом код побыстрее будет. Ну и регулярку можно ускорить немного:

    add_filter( 'the_content', 'delete_html_comments_from_content', 7 );
    
    function delete_html_comments_from_content( $content ) {
    	return preg_replace( '~<!--[^>]+-->~', '', $content );
    }
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация