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