comment_text() – выводит текст комментария

comment_text( $comment_ID = 0, $args = array() )
$comment_ID
(целое число|WP_Comment) По умолчанию функция выводит текст текущего комментария – пример, но если вы хотите вывести текст какого-то определённого коммента, то в этот параметр можете передать его ID или, с версии WordPress 4.4 его объект WP_Comment.
$args
(массив) Массив аргументов, которые используются только для хука comment_text внутри функции, а также для хука get_comment_text, соответственно внутри функции get_comment_text(), на основе которой и работает comment_text().

Примеры

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

<div class="comment-content">
	<?php comment_text() ?>
</div>

Но конечно у вас также есть возможность вывести текст определённого комментария, для этого передаём в функцию первый параметр, например так:

$comment_id = 41;
comment_text( $comment_id );

Хук comment_text внутри функции

Вот мы и подошли к интересненькому.

Дело в том, что если вас спросят, в чём главное отличие между функциями get_comment_text() и comment_text() – что вы скажете? То, что одна функция выводит результат, а вторая – возвращает?

Неверно!

Главное отличие именно в этом фильтр-хуке, через который пропускаеттся результат действия функции перед выводом.

...
 
	echo apply_filters( 'comment_text', $comment_text, $comment, $args );
}

Если вам кажется, что в нём нет ничего такого особенного, то вот вам список того, что вешает на него ядро WordPress:

  • Функцию capital_P_dangit() с приоритетом 31, это нужно для любителей писать название движка неправильно, происходит автозамена «Wоrdpress», «wоrdpress», «вротпресс» и прочих ошибочных написаний на WordPress.
  • Функцию wptexturize() – делает замену некоторых символов, разных кавычек, например с » на “ и так далее.
  • convert_chars() – заменяет & на &
  • make_clickable() с приоритетом 9, которая автоматически создаёт ссылки <a> из урлов в тексте комментария.
  • force_balance_tags() с приоритетом 25, которая попробуем закрыть незакрытые HTML-теги в комментарии пользователя.
  • convert_smilies() с приоритетом 20 – преобразует символы типо 🙂 в 🙂
  • а также функцию wpautop() с приоритетом 20, которая превращает переносы строк в абзацы, именно поэтому никогда не надо помещать функцию comment_text() внутри тегов <p>.

Кстати говоря, любое из этого можно отключить следующим образом:

remove_filter( 'comment_text', 'convert_smilies', 20 );
// remove_filter( 'comment_text', ФУНКЦИЯ, ПРИОРИТЕТ ЕСЛИ ЕСТЬ );

Код для functions.php, если вы вдруг затерялись, куда его вставлять.

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: